2012-05-25 100 views
2

我有一個包含「From」月份的文本框。 (只允許1到12之間的值)如何防止用戶使用JavaScript和JQuery輸入2位以上的數字

我怎麼能阻止用戶,以便當他們嘗試輸入第三個字符時,javascript會阻止用戶鍵入超過2位數字?

這是我迄今爲止嘗試過,但我沒能得到期望的結果(下面的腳本不能在所有的工作)

$("#monthFromTextBox").bind("change", function (event) { 
     var regex = /^\d{1,2}$/g; 
     var monthFrom = $(this).find(".monthFrom").text(); 
     var yearFrom = $(this).find(".yearFrom").text(); 
     var monthTo = $(this).find(".monthTo").text(); 
     var yearTo = $(this).find(".yearTo").text(); 

     // Allow only 1 or 2 digits only 
     if (regex.test(monthFrom) === false) { 
      event.preventDefault(); 
      // alert("Month From value should have 1 or 2 digits only"); 
      return false; 
     } 
    }); 
+2

沒必要用這種複雜的邏輯,在輸入元件上的簡單屬性將做'喜歡esailija maxlength'已經發布。 –

+1

這不是真的要驗證輸入,如果這就是你要去的。他們仍然可以輸入類似「15」的月份 – pdizz

回答

17
<input type="text" maxlength="2"> 
+1

嗯,他要求使用Javascript .... – rlemon

+0

rlemon,爲什麼依賴於JavaScript時,你可以用html完成它? –

+0

@rlemon:沒關係Esailija的答案解決了問題;)但不能在10分鐘內將它標記爲答案 – Sung

1

我知道你問一個JavaScript的解決方案,但我不要以爲你需要一個。

爲什麼不能簡單地限制HTML文本框:

<input type="text" maxlength="2" size="10" value="" name="monthFromTextBox"> 

這樣,你包括在內,即使JavaScript的關閉。

只要記住要驗證服務器端,如果它是一個重要的限制。

7

爲luls ......如果你真的想要一個JS答案..

$("#monthFromTextBox").on('keydown', function() { 
    if (this.value.length > 1) { 
     return false; 
    } 
});​ 
+1

我想你應該使用'if($(this).val()。length> 1)' –

+3

不夠jQuery – Esailija

+0

大聲笑...我的壞。這不是一個巨魔的答案:P它是有效的......只是不需要。 – rlemon

相關問題