0

我已经完成了这项工作,但我知道必须有一种更简洁的方法。

在 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 中不起作用。

有任何想法吗?

4

4 回答 4

1

str是你的字符串,所以你不需要这样做str.value

function checkStr(str) {
    if (str == "" || isNaN(str)) {
        return "0";
    }
}

并设置onblur为实际设置输入的值(如@chris 所述。)

于 2012-07-29T17:42:05.693 回答
1

您的第二种方法没有为文本框值分配任何内容,因此您确实需要以下内容,即将文本框传递给函数

onblur="checkStr(this);"

然后用于检查和分配文本框的功能

function checkStr(textbox) {
    if (textbox.value == "" || isNaN(textbox.value)) {
        textbox.value = "0";
    }
}
于 2012-07-29T17:42:16.340 回答
0

如果我的假设是正确的,并且您尝试将值设置为0当前值不是数字或没有,我建议(如果您必须使用内联 JavaScript):

onblur="checkStr(this);"

加上:

function checkStr(el) {
    el.value = !!!(1 * el.value) ? 0 : el.value;
}

JS 小提琴演示

于 2012-07-29T17:44:02.217 回答
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;
    }
}
于 2012-07-29T17:45:33.583 回答