2014-10-10 61 views
2

我有一個帶有多個選擇字段的表單,允許您選擇多個條目。Jquery check multiple選擇具有值集

每個選擇被命名爲id1[]id2[]id3[]

與jQuery試圖提交我可以檢查是否有任何選擇都不會有任何選擇的形態是什麼時候?

我試過這個,但表單仍然提交。

$("#submit").click(function() { 
     $("select[name^='id']:visible").each(function(index, element) { 
      if ($(this).val() == "") return false; 
     }); 
}); 

我並不需要知道哪些特定的「身份證」選擇一直沒有選擇的選擇,但如果我做這將是很好..

感謝

+0

回報($(「選擇[這將返回false name^='id']:visible> option [value ='']:selected「)。length <= 0) – SSA 2014-10-10 14:36:47

回答

2

可以使用filter函數返回沒有選定值的所有選擇

var selectsWithNoValue = $("select[name^='id']:visible").filter(function() { 
    return !this.value.length; 
}); 

然後,你可以檢查長度,看看是否有任何沒有價值 - 而你也有訪問這些元素

if(selectsWithNoValue.length) { // if there are selects with no value 
    //do something 
} 

此外,由於您正在使用表單綁定到窗體的提交處理程序,而不是點擊按鈕。

所以,如果你想防止表單提交,你可以做

return !selectsWithNoValue.length 

如果有與沒有任何價值選擇

FIDDLE

+0

謝謝 - 這工作得很好。無論如何,如果選擇空白,它可以顯示警報。也可以擴大到包括另一個名爲「文件」的選擇? – Rocket 2014-10-10 16:25:00

+0

我已經從選擇中刪除名稱,現在它檢查所有選擇..哪些工作正常。會很高興看看我是否可以讓它顯示和提醒,可能是如果ID或文件選擇尚未完成.. – Rocket 2014-10-10 16:30:53

+0

:)這似乎工作'if(!this.value.length)alert( '所有表單域需要完成'+ this.name);'在第一次返回之前添加.. – Rocket 2014-10-10 16:32:48

2

附加代碼以形成提交處理程序而不是提交按鈕的點擊處理程序,因此您可以防止提交表單。

$("form").submit(function() { 
    var rtn = true; 
    $("select[name^='id']:visible").each(function(index, element) { 
     if ($(this).val() == "") { 
      console.log(this.id); // id 
      rtn = false; 
      return false; 
     } 
    }); 
    return rtn; 
}); 
+0

@ᾠῗᵲᄐᶌ更正 – 2014-10-10 14:23:01

+0

感謝您的支持。由於某種原因,我仍然在提交。 我的表單名稱和ID是'form'..我會創建一個小提琴並嘗試它。 – Rocket 2014-10-10 15:18:19

+0

@火箭呀是給我的鏈接 – 2014-10-10 15:19:30