Javascript 此脚本在Internet Explorer中中断
我们已经写了这个脚本。本质上,它将输入限制在表单字段中,仅限于数字 然而,我们得到了一个ie。“value”的错误为null或不是对象。请给我一些关于修复的建议Javascript 此脚本在Internet Explorer中中断,javascript,internet-explorer,Javascript,Internet Explorer,我们已经写了这个脚本。本质上,它将输入限制在表单字段中,仅限于数字 然而,我们得到了一个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; }
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不喜欢什么。您设置了变量
十进制的值吗?我看到了它被引用的位置,但没有看到它被设置的位置
添加:无需担心,它是函数的一个参数。您正在将“this.form.limitedtextfield”发送到limitText函数,然后尝试访问属性“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"/>
function limitText(limitField, limitCount, limitNum) {
if (limitField.value.length > limitNum) {
limitField.value = limitField.value.substring(0, limitNum);
}
}
好的,我们把它修好了:
谢谢各位
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);
}
}
仅函数编号(e,十进制){
var键;
var-keychar;
if(window.event){
key=window.event.keyCode;
}
若否(e){
key=e.which;
}
否则{
返回true;
}
keychar=String.fromCharCode(键);
如果((键==null)| |(键==0)| |(键==8)| |(键==9)| |(键==13)| |(键==27)){
返回true;
}
否则如果((((((((“0123456789”).indexOf(keychar)>-1)){
返回true;
}
如果(十进制&&(keychar==”){
返回true;
}
其他的
返回false;
}
函数limitText(limitField、limitCount、limitNum){
如果(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"/
输入id=“landprice”name=“limitedtextfield”size=“50”type=“text”class=“medium”onKeyPress=“returnnumbersonly(event,false)”onKeyDown=“limitText(this.form.limitedtextfield,this.form,8);”
onKeyUp=“limitText(this.form.limitedtextfield,this.form,8);“maxlength=“8”/
您是否有一个使用此功能的公共页面URL?使我调试您的代码更快更容易。最常见的IE问题是尾随逗号(即在其上断开)。但这不是这里的问题。不是公开的,但我们确实有一个直播页面。这是一个开发项目,当前无法在此处放置公共链接。请将其粘贴到internet上可用的开发服务器上。亚马逊将免费为您提供一个开发服务器。看看我如何分享链接给你,而不让它成为公开可见的lol.well斑点。那么应该将id更改为limitText还是>limitField?当前输入id为(input id=“landprice”)认为更改为:input name=“limitedtextfield”更改了输入名称现在我们得到的“undefined”为空或不是对象,然后您仍然缺少id为“countdown”的输入元素。错误已经消失,但现在我们有两个输入表单字段。另外,这完全破坏了代码。嗯