2012-07-29 52 views
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不起作用。

任何想法?

+0

你说你尝试'的onblur = “checkStr();” '在HTML中...你通过了价值吗?像这样:'onblur =“checkStr(this。值“);”' – 2012-07-29 17:34:27

+0

是的,我做了,很抱歉,这是一个错误,现在纠正。 – Tom 2012-07-29 17:40:43

+0

你想要做什么与返回值?你是否设置输入字段为0,如果他们不输入数字? – 2012-07-29 17:42:02

回答

1

你的第二个方法ISN没有分配任何文本框的值,所以你真的需要以下内容,即将文本框传入功能

onblur="checkStr(this);" 

,然后功能检查,并指定文本

function checkStr(textbox) { 
    if (textbox.value == "" || isNaN(textbox.value)) { 
     textbox.value = "0"; 
    } 
} 
+0

这很好用,谢谢 – Tom 2012-07-29 17:55:20

1

str是你的字符串,这样你就不需要做str.value:(如@克里斯提到)

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

并设置onblur实际设置输入的值

0

如果我在我的假设是正确的,而你试图将值设置为0如果当前值不是数字,或有没有价值,我建议(如果你一定要在网上JavaScript中使用):

onblur="checkStr(this);" 

加上:

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

JS Fiddle demo

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; 
    } 
} 
+0

我将代码嵌入。 – 2012-07-29 17:51:10

+0

同时提供证明了一个可行的答案 - 它只是让我很难看到小提琴 – 2012-07-29 17:55:58