输入仅接受数字破折号的文本字段

时间:2014-12-24 15:38:45

标签: jquery html

我正在尝试使用jQuery控制输入字段,之前我只有数字并且可以使用$(this).autoNumeric(),现在我已经到了需要更改输入字段的地方,以' Numbers dash Numbers& #39;

我尝试过这个网站以及其他网站的链接没有任何成功, 我只是UI的初学者,请帮助我。

2 个答案:

答案 0 :(得分:2)

您需要使用正则表达式。我不会完全依赖HTML5输入掩码。

/^\d+(-\d+)*$/
如果没有更强的约束,

就足够了。

$("#myfield").change(function(){ 
  var isValid = $(this).val().match(/^\d+(-\d+)*$/);
  if(!isValid){
    alert('only numbers and hyphesn please');
    return false;
 }
});

简单的html:

<input id="myfield">

演示:http://jsbin.com/jeziqifebu/1/edit


更新:

用户想要数字串,即3.4.5而不仅仅是十进制数字。

 $("#myfield").change(function(){ 
    var pattern = /^\d+(\.\d{1,2})?(\.\d{1,2})?(-\d+(\.\d{1,2})?(\.\d{1,2})?)?$/;
    var isValid = $(this).val().match(pattern);
    if(!isValid){
       alert('only numbers or valid range separated by hyphens please');
     return false;
   }
});

这将采取

2
2-3
2.3
2.3-4
2.3.4-5
2.3.4-5.6
2.3.4-5.6.7

演示:http://jsbin.com/hivikudova/2/edit

答案 1 :(得分:0)

此解决方案不允许您输入除数字和短划线之外的任何内容:JS FIDDLE

<input onkeypress="return isNumberKey(event);">

var dashCount = 0;
function isNumberKey(evt)
{
  var charCode = (evt.which) ? evt.which : event.keyCode;
    if (charCode == 45) {
        dashCount++;
    }
    if ((charCode > 47 && charCode <58) || (charCode == 45 && dashCount < 2))
    {
        return true;
    }
  return false;
}