2

我一直在尝试通过使用正则表达式来验证数量字段,以确定该值是否包含任何非数字字符,但由于某种原因(即使我已经直接复制其他人进行测试)它没有工作。这是我的代码。

HTML

<input type="text" id="quanText" maxlength="2" value="0"></input>

jQuery

$("#quanText").keyup(function(){
    $(this).val().replace(/[^\d\.]/g, '');
});

http://jsfiddle.net/PNaJt/

编辑 我也知道它不起作用,因为我尝试过.replace(/.*/, '');只要我输入它就应该使该字段为空白。

4

2 回答 2

6

JavaScript 中的字符串是不可变的——你需要这样做

var value= $(this).val().replace(/[^\d\.]/g, '');
$(this).val(value);

replace() 函数将返回替换后的字符串,然后您必须将其重新设置为 'this'

于 2013-07-11T10:57:48.247 回答
1

我在附加了一些 jQuery 的输入上使用了几个类:

$("input.intgr").keyup(function (e) { // Filter non-digits from input value.
    if (/\D/g.test($(this).val())) $(this).val($(this).val().replace(/\D/g, ''));
});
$("input.nmbr").keyup(function (e) { // Filter non-numeric from input value.
    var tVal=$(this).val();
    if (tVal!="" && isNaN(tVal)){
        tVal=(tVal.substr(0,1).replace(/[^0-9\.\-]/, '')+tVal.substr(1).replace(/[^0-9\.]/, ''));
        var raVal=tVal.split(".")
        if(raVal.length>2)
            tVal=raVal[0]+"."+raVal.slice(1).join("");
        $(this).val(tVal);
    } 
});
于 2016-08-23T16:09:28.447 回答