我编写了以下代码来验证文本框,其中的数字只有小数点后的两位数,但它在firefox中不起作用 我们在十进制后输入两位数后会阻塞所有键。 例子:如果我输入123.45我无法执行任何其他事件,文本框就像被禁用一样。
使用Javascript:
function noAlphabets(event){
var charCode = (event.which) ? event.which : event.keyCode
if (charCode == 188) {
return true;
}
//Compatible with IE8 & other browser
var obj = event.currentTarget ? event.currentTarget : event.srcElement;
var newvalue = $(obj).val();
alert(newvalue);// $(event.currentTarget).val();
//if (newvalue.indexOf(".") >= 0) {
// if (newvalue.substr(newvalue.indexOf(".") + 1, (newvalue.length - 1)).length >= 2)
// { return false; }
//}
if ((charCode != 46 && charCode > 31
&& (charCode < 48 || charCode > 57))
|| (charCode == 46 && $(obj).val().indexOf(".") != -1))
return false;
return true;
}
MVC视图代码:
@ Html.TextBoxFor(model =&gt; model.FolioList [i] .Amount,(Model.FolioList [i] .IsFolioChecked)?(object)new {@onkeypress =“return noAlphabets(event);”}: (对象)new {disabled =“disabled”,@ onkeypress =“return noAlphabets(event);”})
答案 0 :(得分:0)
我假设您正在寻找它以便您可以更改框的值(即使用退格键来擦除输入并能够输入新值)。考虑到这一点,这是我设计的解决方案。这将检查框中是否有句点,然后检查周期后子字符串的长度是否大于2.如果它大于2并且最近的按键的键码不是退格,则防止按键。第二个if语句检查密钥是否不是数字,退格或句点。如果它不是那些,那么阻止按键。
$("#validate").keydown(function(e){
var pressedKey = (e.which || e.keycode);
if (e.target.value.indexOf('.') > -1 && e.target.value.substr(e.target.value.indexOf('.')).length > 2 && pressedKey != 8) {
e.preventDefault();
}
if (((pressedKey < 48 || pressedKey > 57) && (pressedKey < 96 || pressedKey > 105)) && pressedKey != 8 && pressedKey != 190) {
e.preventDefault();
}
});