亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

asp.net實現取消頁面表單內文本輸入框Enter響應的方法

2024-07-10 13:29:45
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了asp.net實現取消頁面表單內文本輸入框Enter響應的方法,結合實例形式分析了asp.net文本框Enter響應的原理與取消Enter響應的相關實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下
 

本文實例講述了asp.net實現取消頁面表單內文本輸入框Enter響應的方法。分享給大家供大家參考,具體如下:

很早以前開發asp.net項目的時候遇到的:在一個服務器TextBox控件上按下 Enter鍵,頁面回發刷新一遍。后來google一下,發現這是asp.net2.0為表單處理專門設置的"Enter key"功能,關于asp.net ajax表單的enter key,你可以查看這一篇《ASP.NET基于Ajax的Enter鍵提交問題》。前面給出鏈接的兩篇都是叫我們怎么設置enter key默認觸發事件的?,F在有一個新需求是這樣的,錄入人員在錄入的時候按下enter鍵不提交表單(想想也是合理的,如果表單中錄入框較多,一不小心按下enter鍵頁面要回發多少次?),除非直接點擊服務器端提交按鈕。簡單地說,就是去掉表單元素的enter key功能。下面是我的實現:

一、初步分析和實現:

1、頁面繼承一個基類BasePage,基類繼承自Page類,在基類中注冊特定服務器控件的onkeydown腳本事件

using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public class BasePage : System.Web.UI.Page{ public BasePage() { } protected override void OnInit(EventArgs e) {  base.OnInit(e);  CancelFormControlEnterKey(this.Page.Form.Controls); } /// <summary> /// 在這里我們給Form中的服務器控件添加客戶端onkeydown腳步事件,防止服務器控件按下enter鍵直接回發 /// </summary> /// <param name="controls"></param> public static void CancelFormControlEnterKey(ControlCollection controls) {  foreach (Control item in controls)  {   //服務器TextBox   if (item.GetType() == typeof(System.Web.UI.WebControls.TextBox))   {    WebControl webControl = item as WebControl;    webControl.Attributes.Add("onkeydown", "if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {return false;}} ");   }   //html控件   else if (item.GetType() == typeof(System.Web.UI.HtmlControls.HtmlInputText))   {    HtmlInputControl htmlControl = item as HtmlInputControl;    htmlControl.Attributes.Add("onkeydown", "if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {return false;}} ");   }   //用戶控件   else if (item is System.Web.UI.UserControl)   {    CancelFormControlEnterKey(item.Controls); //遞歸調用   }  } }}

這樣,想取消“enter key”功能的頁面只有繼承一下BasePage類即可。

2、用戶控件的處理:我的思路就是在基類中繼續處理用戶控件內部的runat=server的控件,測試也是通過的。

3、頁面中和用戶控件里的沒有runat=server標簽的html控件,直接給這些html控件添加onkeydown事件。

下面是測試頁面和其對應的類文件:

Test.aspx頁面:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="Test" %><%@ Register src="TestUserControl.ascx" tagname="TestUserControl" tagprefix="uc1" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form id="form1" runat="server" ><input type=text id="txtTest" runat="server" /> <input id="txtTest1" type="text" name="txtTest1" onkeydown="if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {return false;}}" /> <asp:textbox ID="Textbox1" runat="server"></asp:textbox> <uc1:TestUserControl ID="TestUserControl1" runat="server" /><asp:Button ID="btnSubmit" runat="server" Text="Submit" /> </form></body></html>

類:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;public partial class Test : BasePage{ protected void Page_Load(object sender, EventArgs e) {  Response.Write("123"); }}

接著是一個用戶控件:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestUserControl.ascx.cs" Inherits="MyWeb.TestUserControl" %><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /><input id="Text1" type="text" runat="server"/><br /><input id="txtInput" type="text" name="txtInput" onkeydown="if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {return false;}}" />

在筆者的機器上,對TextBox,HtmlInputText和沒有runat=server標簽的html控件以及三者組合成的用戶控件按照上面的思路按下enter鍵運行效果果然沒有回發了。

二、腳本改進時碰到的問題

然后我看到if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {return false;}}這一句不斷地出現,就好心把它在頁面里封裝成JavaScript函數叫forbidInputKeyDown(ev):

<script type="text/javascript"> function forbidInputKeyDown(ev) {  if (typeof (ev) != "undefined") {   if (ev.keyCode || ev.which) {    if (ev.keyCode == 13 || ev.which == 13) { return false; }   }  } }</script>

然后onkeydown的方法對應的事件就是“forbidInputKeyDown(event)”(比如對于頁面中服務器端的TextBox控件在注冊客戶端事件的時候就改寫成 webControl.Attributes.Add("onkeydown", "forbidInputKeyDown(event)");),奇怪的是,這一次,頁面又回發了?! 然后腳本調試,forbidInputKeyDown函數也執行了,可是form還是被提交了。

我又看了一下腳本位置,把它從head移動到body內,問題依舊。然后懷疑是不是腳本錯了?不對,腳本沒錯。難道是人品有問題?有問題嗎,這個自信真沒有。注冊事件錯了嗎?嗯......

我kao,恍然大悟,注冊事件應該這么寫的:onkeydown="return forbidInputKeyDown(event)",也就是forbidInputKeyDown函數前面加上return就好了,還是人品啊,囧。

希望本文所述對大家asp.net#程序設計有所幫助。



注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品高清在线| 欧美区在线播放| 欧美性受xxxx黑人猛交| 久久久久久久久久婷婷| 亚洲欧美激情一区| 国产一区二区三区免费视频| 欧美日韩中文字幕在线| 久久久久久国产精品| 亚洲免费视频观看| 91久久精品日日躁夜夜躁国产| 亚洲国产高清高潮精品美女| 久久国产色av| 欧洲午夜精品久久久| 欧美成aaa人片在线观看蜜臀| 亚洲a级在线播放观看| 欧美野外猛男的大粗鳮| 久久九九热免费视频| 色老头一区二区三区在线观看| 精品伊人久久97| 黄色成人av网| 日韩亚洲成人av在线| 亚洲黄色在线观看| 亚洲精品综合久久中文字幕| 人人澡人人澡人人看欧美| 精品丝袜一区二区三区| 亚洲一区二区三区毛片| 精品久久久香蕉免费精品视频| 亚洲第一天堂无码专区| 亚洲精品国产精品久久清纯直播| 亚洲自拍偷拍视频| 亚洲精品中文字| 亚洲精品久久久久久下一站| 国产98色在线| 久久久国产一区二区| 亚洲欧美日韩区| 91在线免费看网站| 久久久久久高潮国产精品视| 性欧美xxxx视频在线观看| 亚洲最大av网站| 亚洲成avwww人| 亚洲美女av网站| 欧洲s码亚洲m码精品一区| 久久福利视频网| 最新国产精品亚洲| 欧美怡红院视频一区二区三区| 91欧美精品成人综合在线观看| 日韩高清电影免费观看完整版| 黄色一区二区三区| 日韩成人在线视频网站| 视频在线一区二区| 不卡毛片在线看| 国产精品69久久久久| 亚洲男女自偷自拍图片另类| 日本一区二区在线免费播放| 欧美成人精品在线视频| 日韩久久精品成人| 91国产视频在线| 欧美日韩黄色大片| 亚洲最新av在线| 亚洲专区国产精品| 日本亚洲欧美三级| 日韩在线免费视频| 91在线视频九色| 国产在线视频不卡| 国产午夜精品一区二区三区| 亚洲精品成人久久久| 热久久视久久精品18亚洲精品| 秋霞成人午夜鲁丝一区二区三区| 欧美巨猛xxxx猛交黑人97人| 亚洲91精品在线| 中国日韩欧美久久久久久久久| 精品国产一区久久久| 日韩中文字幕在线视频| 欧美性69xxxx肥| 狠狠色香婷婷久久亚洲精品| 92福利视频午夜1000合集在线观看| 国产精品视频地址| 国产日韩在线看| 18一19gay欧美视频网站| 国产成人一区二区三区小说| 视频一区视频二区国产精品| 亚洲a∨日韩av高清在线观看| 性色av一区二区三区| 亚洲97在线观看| 91精品成人久久| 久久天堂av综合合色| 国产成人精品免高潮在线观看| 久久久久久久国产精品视频| 日本欧美精品在线| 久久久久一本一区二区青青蜜月| 国产91免费看片| 亚洲国产精品成人一区二区| 久久这里只有精品99| 91精品国产乱码久久久久久蜜臀| 亚洲女人天堂视频| 日韩美女激情视频| 亚州精品天堂中文字幕| 成人精品一区二区三区| 性欧美暴力猛交69hd| 欧美性猛交丰臀xxxxx网站| 92国产精品久久久久首页| 久久成人18免费网站| 亚洲成人精品久久久| 成人在线视频福利| 色综合伊人色综合网| 亚洲成人黄色在线观看| 精品日本美女福利在线观看| 亚洲男女自偷自拍图片另类| 国产做受69高潮| 91av视频在线免费观看| 亚洲精品日韩在线| 色综合男人天堂| 亚洲va欧美va国产综合久久| 亚洲综合成人婷婷小说| 国产美女被下药99| 国产精品久久久久久影视| 中文字幕亚洲欧美| 91精品国产综合久久香蕉| 岛国av一区二区在线在线观看| 精品中文字幕在线观看| 不卡av电影在线观看| 国产激情999| 欧美一级在线亚洲天堂| 欧美最猛性xxxx| 中文字幕亚洲无线码在线一区| 久久人人爽人人爽人人片亚洲| 日韩av中文字幕在线| 亚洲精品视频免费| 午夜精品久久久久久久久久久久| 国产亚洲精品美女久久久久| 久久99国产精品自在自在app| 午夜精品一区二区三区在线视频| 欧美超级乱淫片喷水| 午夜精品一区二区三区在线视频| 欧美巨猛xxxx猛交黑人97人| 97精品免费视频| 久久久成人精品视频| 中文字幕9999| 国产精品第七十二页| 国产做受69高潮| 色偷偷噜噜噜亚洲男人的天堂| 欧美怡春院一区二区三区| 国产91在线播放精品91| 日本精品久久久久影院| 2021久久精品国产99国产精品| 精品国内产的精品视频在线观看| 亚洲欧美国产高清va在线播| 久久免费精品视频| 国产99久久久欧美黑人| 亚洲欧美在线x视频| 国产精品成人久久久久| 久久九九热免费视频| 欧美日本高清一区| 成人有码在线播放| 日韩有码在线电影| 亚洲综合日韩在线| 国产精品视频永久免费播放| 亚洲视频在线观看免费| 一个人看的www欧美| 久久久久久国产免费| 国产一区二区丝袜高跟鞋图片| 亚洲片国产一区一级在线观看| 久久亚洲影音av资源网| 正在播放欧美视频|