以下是我的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代码?
谢谢。
答案 0 :(得分:0)
你的代码有两个问题:你只是在测试按键,而不是输入的值,而且正则表达式有点混乱。以下是修复方法:
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)' />