2012-04-13 94 views
0

我正在jQuery中進行表單驗證,當用戶輸入一個禁止的字符(如#$ @%)時會發出警告。問題是,當用戶輸入這些字符時,他使用SHIFT鍵,所以有兩個鍵盤。如何在jQuery中阻止keyup()事件?

如何防止第二次發生?

if (!regex.test(lastCharacter) 
    alert('forbidden character'); 

非常感謝

回答

1

您可以在輸入時改變發射輸入綁定事件,不過這只是自IE9以來才支持的。在此之前,您可以綁定propertychange事件(僅在IE中),當輸入值發生更改時發生。下面的例子可以在大多數瀏覽器中使用,也可能在IE9中觸發兩次回調,因此可能需要檢查輸入事件支持並相應地採取相應措施。

http://jsfiddle.net/X4qNf/

這裏我不好是一個與PropertyChangeListener中的它,嘗試在IE瀏覽器,如果它不工作,你可能需要指定它的老路上。

$('#boo')[0].onpropertychange = function() {}; 

http://jsfiddle.net/X4qNf/2/

+0

您好感謝您的答覆。我用safari和firefox嘗試了你的解決方案。 onpropertychange也會與IE一起工作嗎?非常感謝 – eric01 2012-04-13 23:07:27

+0

我沒有測試過這個盒子上沒有IE,而是從http://help.dottoro.com/larrqqck.php聲稱它應該工作(並且它從未測試過你的特殊情況) – GillesC 2012-04-13 23:09:13

+0

textInput event似乎一個更好的候選人實際上特定於字符輸入(從IE9再次) – GillesC 2012-04-13 23:10:11

1

我不知道這是否會工作,但你的想法:

$("#myInput").keyup(function(e) { 
    if(e.which == 16) { 
     $(this).keyup(function(event) { 
      if(event.which==16) event.preventDefault(); 
     }); 

     setTimeout(function() { 
      $("#myInput").off('keyup'); 
     },1000); 
    } 
});​