2012-05-25 133 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

相关问题