以下是我的JavaScript代码,该代码仅接受数字和点(。)。但是,如果我写123 ..... 122,它仍然可以接受。基本上,我这样做是为了进行价格字段验证,其中用户只能编写此格式。
需求格式:
$(currency)12345(amount).(dot only once)123(decimal)
JavaScript代码:
<script type="text/javascript">
function validate(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode( key );
var regex = /[0-9]|\./;
if( !regex.test(key) ) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
</script>
HTML输入字段:
<input type='text' onkeypress='validate(event)' />
如何修复此javascript代码?
谢谢。
您的代码有两个问题:您仅测试按键,而不测试输入的值,而正则表达式有点混乱。解决方法如下:
JavaScript:
function validate(toValidate){
if(!/^\$\d+(\.\d{0,2})?$/.test(toValidate))
alert('NOOOOO');//or do something else here
}
HTML输入:
<input type='text' oninput='validate(this.value)' />
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句