我有一個關鍵的問題javascript和asp.net防止回傳inputfield
我有它做了查找TextChanged事件這樣的控制輸入,但我想控制它當用戶確實輸入時
這就是爲什麼我創建了這個JavaScript函數,它工作得很好。因爲它避免了在任何字符輸入
function EnterEvent(e) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == 13) {
return true;
}
else {
return false
}
}
輸入回發然後我想,當文本框包含內容的控制,所以我改變了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。輸入在全部不起作用。
> -----------------編輯2 --------------------
好吧,我成功了!正如我在之前的評論中所說的那樣,我試着像過去一樣添加一個虛擬按鈕控件,然後我從文本框中轉移事件並調用其單擊事件。 它不是在所有的清潔,但它的作品,我匆忙。謝謝你們所有人的回答。如果有人能幫助我仍然會感激。我會繼續回顧這個問題。謝謝。
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;"/>
如果使用updatepanel並在codebehind事件中查看是否有超過3個字符,那麼該怎麼辦? – DatRid
我剛纔那樣做了。回傳繼續,控制消失。 –
呃好吧,你是如何設置你的觸發器? – DatRid