2011-10-17 92 views
0

我有兩個if()語句,其條件都滿足<select><input>表單字段中的默認值,我通過將這些值分配給變量並寫入該變量來測試了這一點。 (0Url)。如果聲明條件滿足,但內容未執行?

然而,似乎沒有if()聲明的內容正確執行。

這裏有一個鏈接到我的jsfiddle:http://jsfiddle.net/cfRAk/2/

任何編輯/答案,爲什麼發生這種情況,將不勝感激!

+0

請界定「既不......正確執行」告訴我們你希望發生什麼,什麼意想不到的事情正在發生。 –

回答

0

這裏就是你問的是代碼:

$('#post-form').click(function() { 
    var geo_select_val = $('select[name=g_country\\[1\\]]').val();   
    if(!geo_select_val) { 
     var geo_url_val = $('input[name=g_url\\[1\\]]').val(); 
     if(geo_url_val != "http://google.com") { 
      $('#notification').html("You need to enter a valid url"); 
     } 
    } 
}); 

當我在此點擊功能設置斷點,然後單擊後表單的div,geo_select_val回來爲"0"這意味着if(!geo_select_val)會失敗,因爲geo_select_val確實有一個值,所以第一個條件將永遠不會被執行。

也許你想在第一,如果條件是:

if (geo_select_val != "0") { 

如果除了默認的一些其他的價值已被選中,這將告訴你(假設你添加其他選項與不同的價值觀是選擇標籤)。

+0

啊,道歉。從PHP到JS的轉換比我想象的更難,因爲0在PHP中被認爲是錯誤的。感謝您的回答,我會接受定時器何時下降。 – Avicinnian

+2

'0'數量被認爲是'FALSE'在JavaScript了。但是一個字符串'「0」不是'false'值。 jQuery的'.val()'返回一個字符串,而不是一個數字,如果它是一個空字符串,它只會是false。 – jfriend00

1

改變這一行:

var geo_select_val = $('select[name=g_country\\[1\\]]').val(); 

要這樣:

var geo_select_val = parseInt($('select[name=g_country\\[1\\]]').val()); 

的事情是geo_select_val其實"0",而不是0。如果字符串爲空,則將字符串轉換爲布爾值只會導致false"0"不是空的,所以它被評估爲真。既然你要!geo_select_val,它永遠不會在

警告:如果你確保所有值爲數字此修復纔有效。如果不是這種情況,檢查平等"0"