我们写了这个脚本。从本质上讲,它将输入限制为表单字段,仅限于数字。
然而我们得到一个ie。 'value'的错误为null或不是对象。有任何关于修复的建议请。
function numbersonly(e, decimal) {
var key;
var keychar;
if (window.event) {
key = window.event.keyCode;
}
else if (e) {
key = e.which;
}
else {
return true;
}
keychar = String.fromCharCode(key);
if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ) {
return true;
}
else if ((("0123456789").indexOf(keychar) > -1)) {
return true;
}
else if (decimal && (keychar == ".")) {
return true;
}
else
return false;
}
function limitText(limitField, limitCount, limitNum) {
if (limitField.value.length > limitNum) {
limitField.value = limitField.value.substring(0, limitNum);
} else {
limitCount.value = limitNum - limitField.value.length;
}
}
表单元素是:
input id="landprice" name="landprice" size="50" type="text" class="medium" onKeyPress="return numbersonly(event, false)" onKeyDown="limitText(this.form.limitedtextfield,this.form.countdown,8);"
onKeyUp="limitText(this.form.limitedtextfield,this.form.countdown,8);" maxlength="8"
不确定ie不喜欢什么。
答案 0 :(得分:2)
您正在向limitText函数发送“this.form.limitedtextfield”,然后尝试访问属性“value”,根据我的测试,如果没有输入字段为id“limitedtextfield”,您将收到错误消息页。
根据评论编辑: 试试这样:
<input id="countdown"/>
<input id="landprice" name="landprice" size="50" type="text" class="medium" onKeyPress="return numbersonly(event, false)" onKeyDown="limitText(this,this.form.countdown,8);"
onKeyUp="limitText(this,this.form.countdown,8);" maxlength="8"/>
编辑2: 如果您不需要计数器,请更改limitText函数,如下所示:
function limitText(limitField, limitCount, limitNum) {
if (limitField.value.length > limitNum) {
limitField.value = limitField.value.substring(0, limitNum);
}
}
答案 1 :(得分:0)
您是否设置了变量decimal
的值?我看到它被引用的位置,但不是它被设置的位置。
补充:没关系,它是函数的一个参数。
答案 2 :(得分:0)
好的我们修好了:
谢谢你们。
function numbersonly(e, decimal) { var key; var keychar; if (window.event) { key = window.event.keyCode; } else if (e) { key = e.which; } else { return true; } keychar = String.fromCharCode(key); if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ) { return true; } else if ((("0123456789").indexOf(keychar) > -1)) { return true; } else if (decimal && (keychar == ".")) { return true; } else return false; } function limitText(limitField, limitCount, limitNum) { if (limitField.value.length > limitNum) { limitField.value = limitField.value.substring(0, limitNum); } }
表单字段更改为:
input id="landprice" name="limitedtextfield" size="50" type="text" class="medium" onKeyPress="return numbersonly(event, false)" onKeyDown="limitText(this.form.limitedtextfield,this.form,8);" onKeyUp="limitText(this.form.limitedtextfield,this.form,8);" maxlength="8"/