0
<input type="text" id="price" />

$('#price').keyup(function(){
        $('#price').val($('#price').val().replace(',', '.'));
})

演示:http: //jsfiddle.net/2KRHh/1/

这替换,.. 这没关系,但我想用 NULL 替换所有不是数字的字符。我怎样才能用正则表达式做到这一点?

4

2 回答 2

3

从可用性的角度来看,猜测用户可能想要或不想要什么然后尝试纠正这些错误没有多大意义。只需使用如下模式:

<input class="" type="text" id="price" pattern="\d+\.\d\d"/>

现代浏览器将根据模式验证输入字段,您也可以使用$(this).attr("pattern")它来验证它。

现在,如果它不匹配,只需提示用户更正他们的输入。

在最简单的形式中,它可能类似于以下示例。它只是对输入 (,->.) 进行简单的替换(如果您使用该模式并随后根据自己的喜好进行更正,这甚至可能没有必要"\d+[.,]\d\d"),然后尝试验证。如果失败,用户将无法提交并被提示更正他们的输入。

于 2013-06-15T20:00:36.000 回答
2

您可能想看看我的 jQuery iMask plugin,尽管您具体要求的是:

.replace( /.*?(\d+)(?:\.(\d{1,2}))?.*/, function( rx, dollars, cents ){
    cents = +( cents || 0 );
    return (+dollars + (cents/((cents<10)?10:100))).toFixed(2);
} );

如果您只想去除非数字:

.replace( /[^0-9.]/g, '' )
于 2013-06-15T19:39:21.993 回答