[英]Prevent postback on Enter in a asp.net inputfield
我的密鑰輸入在javascript和asp.net中有問題
我有一個這樣的控件,帶有一個textchanged事件,可以查找,但我想在用戶輸入時控制它
<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event)" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" />
這就是我創建這個javascript函數的原因。 因為它避免了在任何字符輸入處輸入回發
function EnterEvent(e) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == 13) {
return true;
}
else {
return false
}
}
然后我想控制TextBox何時有內容,所以我改變了這樣的js。
function EnterEvent(e, ctrl) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == 13) {
return ctrl.value.length > 2;
}
else {
return false
}
}
控制
<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event, this)" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" />
但沒有任何反應。 任何時候我進入,頁面回發。
我還在加載頁面后面的代碼中添加了這個
TextBox1.Attributes.Add("onkeypress", "EnterEvent(event, this);");
TextBox1.Attributes.Add("onkeyup", "EnterEvent(event, this);");
TextBox1.Attributes.Add("onkeydown", "EnterEvent(event, this);");
我的頁面仍然按回車鍵進行回發。 我的想法是,如果至少有3個字符,則停止輸入回發。 任何想法或其他方法?
> -----------------編輯--------------------
我在EnterEvent之前添加了這個函數
$(function () {
$(':text').bind('keydown', function (e) {
if (e.keyCode == 13)
e.preventDefault();
});
});
但它會阻止所有頁面中的Enter。 輸入不起作用。
> ----------------- EDIT 2 --------------------
好吧,我成功了! 正如我在之前的評論中所說的那樣,我在過去嘗試添加一個虛擬按鈕控件,我從文本框轉移了事件並調用了它的click事件。 它並不干凈但是它有效並且我很着急。 謝謝你們所有人的回答。 如果有人可以提供幫助,我會很感激。 我會繼續回顧這個問題。 謝謝。
function EnterEvent(e, ctrl) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == 13 && ctrl.value.length > 2) {
$('[id$=Button1]').click();
}
else {
return false;
}
}
<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event, this)" />
<asp:Button ID="Button1" runat="server" OnClick="TextBox1_TextChanged" style="visibility:hidden;width:0;"/>
有類似的需要阻止輸入按鍵(雖然,我不需要考慮輸入長度條件,如在這種情況下),並發現這解決了問題...比添加整個腳本塊更簡單,如果您需要由於有人在文本區域按Enter鍵,因此停止表單回發。
<asp:TextBox ID="tb_Input" runat="server" onkeypress="return event.keyCode != 13;"></asp:TextBox>
我以為我會分享這個以防其他人只是在搜索這個功能。
嘗試:
e.preventDefault();
停止Enter事件。
我建了一個小提琴手:
http://jsfiddle.net/rblaettler/Y3b8F/5/
這是你想要做的嗎? 如果您的字符數超過2個,則僅提交。
<asp:TextBox ID="TextBox1" runat="server" onkeydown="return EnterEvent(event,this);" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" />
function EnterEvent(e, ctrl) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == 13 && ctrl.value.length > 2) {
return false;
}
else {
return true;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.