我已经有了这个工作,但我知道必须有一个更简洁的方法。
在html页面的文本字段中使用onBlur,它调用一个方法,如果值为空或NaN,则替换字符串的值。
JS:
function checkStr(str) {
return str.value = "0";
}
HTML:
onblur="if(this.value=='' || isNaN(this.value)){this.value=checkStr(this.value)};"
所以这确实有效,但似乎详尽无遗。使用:
function checkStr(str) {
if (str.value == "" || isNaN(str.value)) {
return str.value = "0";
}
}
在JS文件中,并且:
onblur="checkStr(this.value);"
在HTML中不起作用。
有什么想法吗?
答案 0 :(得分:1)
str
是您的字符串,因此您无需执行str.value
:
function checkStr(str) {
if (str == "" || isNaN(str)) {
return "0";
}
}
并设置onblur
以实际设置输入值(如@chris提及。)
答案 1 :(得分:1)
你的第二种方法是没有为文本框值赋值,所以你真的需要以下内容,即将文本框传入函数
onblur="checkStr(this);"
然后用于检查和分配文本框的功能
function checkStr(textbox) {
if (textbox.value == "" || isNaN(textbox.value)) {
textbox.value = "0";
}
}
答案 2 :(得分:0)
如果我的假设是正确的,并且您尝试将值设置为0
,如果当前值不是数字,或者 没有值,我建议(如果你必须使用内联JavaScript):
onblur="checkStr(this);"
加上:
function checkStr(el) {
el.value = !!!(1 * el.value) ? 0 : el.value;
}
答案 3 :(得分:0)
您尝试的内容看起来很近,但如果您将this.value
传递给该函数,则不应在函数中检查str.value
。
此外,如果验证通过,则需要返回正确的值。并在值返回时将值分配回字段。
我认为你需要这样的东西:
<input type="text" onblur="this.value = checkStr(this.value);" />
然后在js ......
function checkStr(str) {
if (str == "" || isNaN(str)) {
return "0";
} else {
return str;
}
}