我见过很多与此类似的问题,但并不是我想要的......如果我错过了一个问题,请道歉。
因此,我在iOS UIWebView和移动版Safari中运行的HTML应用程序有一系列数字输入。他们只需要接受数字而不是特殊字符或字母,并且必须验证最大值。
我目前正在使用e.which
进行验证,这在大多数时间都有效,但当然有一堆标点字符(尽管在iOS上有不同的键)报告相同键码作为数字键,我无法弄清楚我是否可以在输入字段中显示之后不允许输入它们,而不是将它们删除。
(已删除不相关的代码和结构。)
<input type="number" id="input-patients" value="1600" max="10000" min="0" />
<input type="number" id="input-pct_dropout" value="16" max="100" min="0" />
<input type="number" id="input-annual_dollars" value="275" max="500" min="0" />
JavaScript的:
$('.input').on('keydown', function(e){
var charCode = (e.which) ? e.which : event.keyCode;
if (charCode > 47 && charCode < 59 || charCode == 8){
// here a bunch of other stuff happens
return true;
}
else{
return false;
}
});
我可以检查特殊字符,而不先在输入字段中显示它们,然后从字符串中剥离它们吗?
提前致谢。
答案 0 :(得分:0)
onkeyup: 从输入框中获取值,然后检查数字? (如果是,则isNAN(val)返回false并停止进一步处理),否则继续执行下一个调用递归函数turnToInt的步骤,并使用该函数返回的有效INT设置此输入框的值;
turnToInt函数:检查有效数字(如果是,则返回该数字或从val中删除最后一个字符,并调用自身进行进一步验证,最后返回有效的INT数字);
$(".select_object").keyup(function() {
(val = $(this).val()) && isNaN(val) && $(this).val(turnToInt(val))
});
function turnToInt(val) {
return isNaN(val) ? turnToInt(val.substr(0,val.length-1)) : val;
}