通过调用方法替换字符串

时间:2012-07-29 17:31:50

标签: javascript html

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

在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 个答案:

答案 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;
}

JS Fiddle demo

答案 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;
    }
}