-2

我有一個引導模態框,其中包含註冊表單。我已經添加了一些代碼,使得當按下提交按鈕的模式對話框消失:如果else語句沒有效果 - javascript

$(".dismiss-signup-modal").click(function() { 
    jQuery('#signup_modal').modal('hide'); } 
}); 

這工作得很好,但我想使模式對話框留在當前,如果註冊表格的電話號碼字段是空白的,如果電話號碼字段的值,像這樣纔會消失:

$(".dismiss-signup-modal").click(function() { 

    if ($('.signup-phone').length > 0) { 

    jQuery('#signup_modal').modal('hide'); } 

    else {} 
}); 

但上面的代碼不會做任何事情,如果電話號碼字段爲空模態對話框仍然消失。我嘗試了所有可以考慮將if else語句放在函數之外的組合,或者創建一個新函數或將.signup-phone變成一個var,但沒有任何作用,任何想法?感謝

回答

5

您需要檢查值的長度..

但你檢查jQuery對象的存在 (如果該元素存在與否)

應該是

if($('.signup-phone').val().length > 0) { 

$('.signup-phone').length將總是大於一,因爲該元素是pressnton這一頁。所以情況總是如此。

+1

此。順便說一句,解釋爲什麼$('。signup-phone').length> 0'是錯誤的:檢查一個$(selector)的.length與*「這個選擇器是否存在?」*相同。因此你需要用'val()'來獲取選擇器9的值,以查看是否寫了一些東西。 – RaphaelDDL

+0

一個更好的方式來說明,選擇器匹配的元素數等於jQuery對象的長度。通過檢查它是否大於零,它就成爲存在檢查。 –

+0

這樣做,非常感謝您的幫助 – railsy

0

我認爲$('.signup-phone').length是指向元素的長度而不是它的長度值。

也許你可以試試這個:

$(".dismiss-signup-modal").click(function() { 

    if ($('.signup-phone').text.length > 0) { 
    // or you could use 
    //if ($('.signup-phone').value.length > 0) { 
    jQuery('#signup_modal').modal('hide'); } 

    else {} 
}); 

編輯:通過元素我的意思是JQuery的元素(//如果選擇是多個元素的引用)。

+0

這是什麼意思,「元素的長度」?更準確的說法是,jQuery對象的長度等於它當前匹配的元素的數量。 –

+0

抱歉誤會英語是我的外語,我無法找到更好的詞來描述JQuery元素。 – Sebastien

1

JQuery對象的長度與DOM元素的長度不同。 JQuery.length爲您提供了包含的元素數量,而不是輸入元素值的長度。因此:

$('.signup-phone').length; 

應該是1的值,因爲在類'signup-phone'中找到了單個元素。你想要什麼是真正的元素值,而不是長度:

$('.signup-phone').val().length; 
+0

你確定re:length是jQuery對象的一個​​函數嗎?可能想重新閱讀文檔。 –

+0

我的不好,你是對的,我已經解決了我的答案。 – Lochemage