我有一个函数用于将表单输入限制为仅限数字,或者根据字段限制数字和小数。允许小数和数字很容易,但我试图更进一步,只允许一个小数,同时还要确保小数不是字段中的第一个字符。我已经成功地只允许一个小数,并且我也已经使它只有“0”是第一个数字时才允许小数,但是当任何数字是由于某种原因的第一个数字时,我不能让它允许小数。如果我做了大量的if
声明,我可以使它工作,但我试图避免这种情况。有什么建议吗?
// this allows only one decimal, and only if the first character of the field is a zero
else if ((('.').indexOf(keychar) > -1) && field == document.form.start_pay && document.form.start_pay.value.indexOf('.') <= -1 && document.form.start_pay.value.charAt(0) == ('0')){
return true;
}
答案 0 :(得分:3)
/^((?:\d\.\d)|(?:\d+))$/.test(document.form.start_pay)
将涵盖您的所有案件。 (应该通过1
,100
,0.7
,8.3
以及您可以想到的任何其他排列,但不允许.3
,1.21
...等)
逐行:
/ #Begin regular expression
^ #Starting at the beginning of the string
( #For group #1
(?: #Match
\d\.\d #A number followed by a literal . (\.) followed by a number
)
| #Or
(?: #Match
\d+ #A number one or more times
)
) #End group 1
$ #Followed by the end of the string
/ #End regular expression
答案 1 :(得分:2)
将其更改为:
else if ((('.').indexOf(keychar) > -1) && field == document.form.start_pay && document.form.start_pay.value.indexOf('.') <= -1 && /[0-9]+/.test(document.form.start_pay.value.charAt(0))){
return true;
}
答案 2 :(得分:0)
更改:
document.form.start_pay.value.charAt(0) == ('0')
致:
!isNaN(document.form.start_pay.value.charAt(0))