2011-11-04 78 views
1

這裏是我的函數來檢查郵政編碼。當一個空值進來,我不斷得到「對象需要」有誰知道我哪裏會出錯?javascript空值不工作

ASPX標籤 -

asp:CustomValidator 
    ID="cv_zipcode" 
    runat="server"  
    ControlToValidate="tb_zipcode" 
    ClientValidationFunction="ValidateZipcode" 
    ValidateEmptyText="true" 
    Display="Dynamic" 
    ValidationGroup="vgroup"> 
</asp:CustomValidator> 

 

function ValidateZipcode(sender, args) { 
       var regZipcode = '\d{5}' 
     var zipcode = document.getElementById(sender.id.replace(/cv_/, "tb_")); 
        if ((zipcode.value == "ZipCode") || (zipcode.value.length == null) || (zipcode.value.length == "")) { 
      zipcode.style.backgroundColor = "#f6e086"; 
      args.IsValid = false; return; 
     } else { 
      args.IsValid = true; 
      zipcode.style.backgroundColor = "white"; 
     } 
    } 
+0

什麼是null時會出錯?郵政編碼? – Ord

+0

是郵編。 – user970225

+0

你能通過它的類型id(tb_zipcode)獲取你的元素,而不是替換髮件人ID上的文本嗎? – enduro

回答

1

我不是肯定確切LY其值爲空,但在一般情況下,如果你有一個變量x,其可能會或可能不會是空的,你想要做X事,你可以做到以下幾點:

x != null && do_something_with(x) 

如果x == null,然後這將返回false並且不會嘗試執行do_something_with()。否則,該表達式將返回值do_something_with(x)

如果您只是do_something_with(x),並且x爲空,並且do_something_with()不等於null,則可能會出現錯誤。

編輯:

嘗試:

if ((zipcode == null) || (zipcode.value == null) || [everything else]) 
+0

郵政編碼值爲null時,我得到這個錯誤 – user970225

0

zipcode.value.length返回一個整數

我想你應該有

if ((zipcode.value == "ZipCode") || (zipcode.value.length == 0)) 
+0

試過。不工作 – user970225

0

我是這一行的一點猜想:

if ((zipcode.value == "ZipCode") || (zipcode.value.length == null) || (zipcode.value.length == "")) { 

試試這個:

if ((zipCode.value == null) || (zipcode.value== "") || (zipcode.value.length == 0)) { 
+0

最新的區別是什麼? – user970225

+1

'zipcode.value.length'永遠不會返回null。 'zipcode'或'zipcode.value'可能,但'length'是一個int。 – Sam

0

這個錯誤信息通常表明你試圖獲取或設置一個屬性,或者調用一個不是對象的方法,當你認爲引用一個對象的變量爲null或未定義時,這往往會發生。也就是說,如果someVariable爲空或未定義,則不能說someVariable.someProperty

如果.getElementById()沒有找到匹配的元素返回null,所以在這一行:

var zipcode = document.getElementById(sender.id.replace(/cv_/, "tb_")); 

zipcode可能被設置爲空,如果是,那麼所有嘗試像zipcode.valuezipcode訪問屬性和zipcode.style將會失敗。

如果參數args來作爲null或undefined,則在嘗試將args.IsValid會失敗,同樣如果參數sender爲null或undefined,則sender.id將失敗。

所以,如果你有一個可能爲空的變量,你應該在對它做任何事情之前測試它。