2013-12-20 102 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/)來演示完整的問題,並重現問題。 –