簡體   English   中英

禁止在所有輸入文本框中使用jquery鍵入少量字符,例如“<”,“>”

[英]Disallow typing of few of characters e.g.'<', '>' in all input textboxes using jquery

我如何實現這一目標: -
當用戶輸入'abcd'等字符然后'>' (我的應用程序的字符無效)時,我想將文本設置回'abcd' 如果我們可以像在winforms應用程序中那樣取消輸入,那就更好了。 這應該在用戶輸入而不是單擊按鈕時發生。

我希望將其應用於我的網頁中的所有文本框。 如果解決方案是基於jQuery的,這將很容易。 可能會像這樣開始。
$("input[type='text']")


我使用了@jAndy和@Iacopo提供的答案(對不起,無法標記為兩者的答案),如下所示。

$(document).ready(function() {
  //makes sure that user cannot enter < or > sign in text boxes.
  $("input:text").keyup(purgeInvalidChars)
      .blur(purgeInvalidChars)
      .bind('keypress', function(event) {
        if (event.which === 62 || event.which === 60)
          return (false);
      });
  function purgeInvalidChars() {
    if (this.value != this.value.replace(/[<>]/g, '')) {
      this.value = this.value.replace(/[<>]/g, '');
    }
  }
});

雖然仍然存在一個問題,即它不允許用戶在文本框中選擇文本,這只發生在chrome上,在IE上工作正常(第一次:D),沒有在firefox上測試過。 如果有人能找到解決方案或者希望谷歌的人們解決它,那將是很高興的:D。

UPDATE
我通過if (this.value != this.value.replace(/[<>]/g, ''))檢查解決了它。 還更新了解決方案

再次感謝所有的回答者。

您應該捕獲'keyup'和'blur'事件並將它們附加到一個使輸入合並的函數:不要忘記用戶可以粘貼無效的字符序列。

所以舉個例子

$('input[type="text"]').keyup(purgeInvalidChars).blur(purgeInvalidChars)

function purgeInvalidChars()
{
   this.value = this.value.replace(/[<>]/g, ''); 
} 

當然你會改進正則表達式,可能會替換所有字符,除了啟用的字符。

對不起,我無法測試我的代碼,所以你應該把它暨grano salis :-)

示例(按鍵):

$(document).ready(function(){
    $('input:text').bind('keypress', function(event){

    if(event.which === 62 || event.which === 60)
       return(false);
    });
});​

示例(keydown):

$(document).ready(function(){
  $('input:text').bind('keydown', function(event){
    if(event.which === 226)
       return(false);
  });
});​

只需對事件使用preventDefaultstopPropagation函數。 這些是通過在事件處理程序中返回( false )來觸發的。

在這個例子中,我只是檢查<>的密鑰代碼,幸好在同一個密鑰上。 如果我們點擊該代碼,我們只是阻止默認行為。

參考.preventDefault() ,. stopPropagation()

$('#textBox').keyup(function(e){
            var myText = $('#textBox').val(); 
            myText =  myText.replace(">", "");
            myText =  myText.replace("<", "");
            $('#textBox').val(myText);
        });

- 更新 -

keyup而不是keypress

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM