2011-02-25 91 views
-1

我有一些表單驗證代碼似乎沒有正常工作,我無法弄清楚爲什麼。表單驗證不起作用

function isTextFieldEmpty(textField){ 
    //return true or false depending on whether or not there is any text in the field 

     console.log("Checking to see if the current field is empty..."); 

    var val = textField.value;   //val is the text from the current field 
     console.log("The current value of 'val' is: " + val); 
    if(val.length < 1){ 
     return true; 
    }else{ 
     return false; 
    } 

} 

我得到的錯誤是:「遺漏的類型錯誤:無法讀取屬性未定義的‘長度’」。果然,我的控制檯日誌說'val'的值是undefined

我敢肯定我錯過了一些東西,但我仍然在學習JS,不知道它是什麼。有什麼建議麼?


編輯:這是我傳遞什麼功能:

var uName = document.getElementById("unionname"); 
var noUnionName = isTextFieldEmpty(uName); 

「unionname」是,我試圖驗證texfield的ID。以下是相關的HTML:

<div class="formBox"> 
     <label for="unionname">Union Name</label> 
     <input type="text" name="unionname" id="unionname" value="" class="wide"/> 
     <span class="feedback good">Sample good message</span> 
    </div> 
+1

似乎好的...你確定你傳遞的參數實際上包含一個文本字段嗎? – Andrea 2011-02-25 18:12:24

+0

@Andrea它似乎不是......嗯。這不好。 – GnomeSlice 2011-02-25 18:19:03

+1

你傳遞給你的'isTextFieldEmpty()'函數是什麼? – drudge 2011-02-25 18:24:36

回答

0

您在本函數中聲明var val。嘗試通過將其放在腳本的頂部來全局聲明它;不需要設置它,只需聲明它。

+0

儘管我只需要它。我不應該在全球範圍內宣佈它。 – GnomeSlice 2011-02-25 18:38:24

0

我已經得到它的工作。似乎驗證功能沒問題;問題出在我稱呼它的方式。

window.onload = justDoIt; 

function justDoIt() { 

    var uName = document.getElementById("unionname"); 

    uName.onblur = function(){ 
     clearMessages(uName);  // clear out old feedback for this field 

     var noUnionName = isTextFieldEmpty(uName); 

這就是我最終調用函數的方式。具有諷刺意味的是,似乎我在前面的例子中遺漏的錯誤的.onblur代碼可能是我的問題的原因。但我真的不確定。