91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

asp.net怎么實現取消頁面表單內文本輸入框Enter響應的功能

發布時間:2021-08-06 23:44:53 來源:億速云 閱讀:109 作者:chen 欄目:開發技術

這篇文章主要講解了“asp.net怎么實現取消頁面表單內文本輸入框Enter響應的功能”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“asp.net怎么實現取消頁面表單內文本輸入框Enter響應的功能”吧!

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

一、初步分析和實現:

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怎么實現取消頁面表單內文本輸入框Enter響應的功能”的內容了,經過本文的學習后,相信大家對asp.net怎么實現取消頁面表單內文本輸入框Enter響應的功能這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

五台县| 广南县| 卓资县| 尉氏县| 那曲县| 丰原市| 北辰区| 即墨市| 玛多县| 灵璧县| 万山特区| 仙桃市| 同仁县| 吉首市| 屯门区| 岳阳县| 友谊县| 峡江县| 云浮市| 马龙县| 赞皇县| 柘荣县| 韩城市| 景洪市| 黔西县| 彝良县| 津市市| 临桂县| 姜堰市| 五常市| 乳源| 天柱县| 灌阳县| 齐齐哈尔市| 辽中县| 镇巴县| 炎陵县| 邢台县| 罗山县| 满城县| 津市市|