2013-12-20 65 views
-1

我真的不喜欢问问题并依赖于其他人,但我必须! 我需要用户输入两到五个单词,由fontvorto1,fontvorto2,fontvorto3,fontvorto4和fontvorto5指定。 我必须确定,他/她不会留下空白的中间文本字段。 因此,在每次输入试用期间,我都会通过onclick来检查上面的字段是否已填写。如果没有,用户将收到警报并且输入被中断。 为了最小化的代码量余创建了下面的模型的五种功能:如何为布尔对象赋值

function fV2k() {x = document.getElementsByName('fontvorto1')[0].value.substr(0, 6); return Boolean(x == "Skribu" || x === "");} 
    function fV3k() {x = document.getElementsByName('fontvorto2')[0].value.substr(0, 6); return Boolean(x == "Skribu" || x === "");} 

等高达fV25,其中“Skribu”是文本输入字段fontvorto1,fontvorto2等的初始VALU。 输入字段的onclick为:

onclick="if(fV2k()){alert(admonition);} else {this.value='';}" 

但这并不起作用。另外

onclick="p = fV2k(); if(p){alert(admonition);} else {this.value='';}" 

不起作用。 所以我努力通过一些关于布尔和布尔对象的教程,我总结说我应该创建“var p = new Boolean()”。 现在我有:

var p = new Boolean(); 
function fV2k() {x = document.getElementsByName('fontvorto2')[0].value.substr(0, 6); p = Boolean(x == "Skribu" || x === "");} 
function fV3k() {x = document.getElementsByName('fontvorto2')[0].value.substr(0, 6); p = Boolean(x == "Skribu" || x === "");} 

等,这是不对的,当然,因为我应该把P作为功能,而不是在这里分配一个值。每次我介绍一个“创新”时,我感到乐观,现在我解决了这个问题,但每次我的希望都破灭了。 我希望我已经清楚,有些“专家”喜欢这个问题。

回答

1

保持简单。你的函数应该只是测试值,并返回结果,就像这样:

function fV3k() { 
    var x = document.getElementsByName('fontvorto2')[0].value.substr(0, 6); 
    return x === "Skribu" || x === ""; 
} 

或名称中的可能会采取作为参数,这样就可以减少函数总数你需要写:

function fV(name) { 
    var x = document.getElementsByName(name)[0].value.substr(0, 6); 
    return x === "Skribu" || x === ""; 
} 

,然后用它作为

onclick="if(fV('fontvorto1')){alert(admonition);} else {this.value='';}" 
... 
onclick="if(fV('fontvorto2')){alert(admonition);} else {this.value='';}" 
+0

非常感谢,PSWG !我开始像你现在所建议的那样简单,但对于一些现在无法辨认的原因,它并不奏效。 – user2772060

+0

@ user2772060那么除非你在实施这个确切的解决方案时遇到问题,否则你应该打开另一个问题。在你做之前,你应该尝试制作一个[jsFiddle](http://jsfiddle.net/)来演示完整的问题,并重现问题。 –