好的,首先是一些背景,我不能使用除YUI之外的任何javascript库来进行这个项目。
我要做的是接受输入并将其阻止为仅允许数字输入。我知道这在验证中更容易做,但PM希望它在onkeypress上。我所拥有的是通过在网络上运行构建而在Firefox中运行良好。不幸的是,这必须与IE8和IE6兼容,并且它都不兼容。
这是我到目前为止所做的:
<script type="text/javascript">
function onlyNumbers(evt) {
evt = (evt) ? evt : window.event
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
</script>
<input type="text" id="<%=Model.HtmlID %>" value="<%= startingAnswer %>"name="<%=Model.HtmlID %>"
maxlength="<%=maximumLength %>" onkeypress="return onlyNumbers(event);" />
有关它的错误的任何想法使它在IE中不起作用吗?
答案 0 :(得分:1)
<script type="text/javascript">
function onlyNumbers(target) {
var newVal = document.getElementById(target).value;
if (isNaN(newVal)) {
document.getElementById(target).value = newVal.replace(/[^0-9.]/g, "");
}
}
</script>
<input type="text" id="<%=Model.HtmlID %>" value="<%= startingAnswer %>"name="<%=Model.HtmlID %>"
maxlength="<%=maximumLength %>" onkeyup="javascript:onlyNumbers('<%=Model.HtmlID %>');" />
花了一些额外的努力和一点点创造力,但我确实得到了这个。这并不是真正禁止输入,而是只要放开密钥就会清除掉任何不允许的内容。实际上也适用于IE6
答案 1 :(得分:0)
YUI将文本字段验证作为其表单模块的一部分。 一个例子(YUI 3)
var myForm = new Y.Form({
method : "post",
action : "/test.php?action=submit",
inlineValidation : true,
fields : [
{name : 'input1', type : 'text', label : 'Numbers only: ', validator : 'IntegerField'},
{type : 'submit', label : 'Submit'},
{type : 'reset', label : 'Reset'}
]
});
myForm.render('#formContainer');