2014-12-02 199 views
0

我有一個可能的複選框列表,用戶最多可以選擇三個選項。我正在努力的是如何識別哪些盒子被檢查,然後將它們分配給變量(在稍後的ajax調用中發送)。到目前爲止,我寫的代碼似乎只是取前三個複選框的值,而不管它們是否被選中,並在我的ajax調用中使用。請幫我弄清楚我出錯的地方。將複選框值分配給變量

這裏是我的HTML:

<ul id="Names" class="stateNames"> 
    <li>Alabama 
     <ul class="airports"> 
      <li><input type="checkbox" class="destination"/> Birmingham, AL</li> 
      <li><input type="checkbox" class="destination"/> Huntsville, AL</li> 
     </ul> 
    <li>Alaska 
     <ul class="airports"> 
      <li><input type="checkbox" class="destination"/> Anchorage, AK</li> 
      <li><input type="checkbox" class="destination"/> Fairbanks, AK</li> 
      <li><input type="checkbox" class="destination"/> Juneau, AK</li> 
     </ul> 
    </li> 
</ul> 
<input type="button" onclick="clickHandler()" value="Submit" /> 

這裏是我的JavaScript/jQuery的:

function clickHandler() { 
endLocDest1 = ""; 
endLocDest2 = ""; 
endLocDest3 = ""; 

for(i = 0; i < document.getElementsByClassName('destination').length; i++) { 
    if (document.getElementsByClassName('destination')[i].checked) { 
     endLocDest1 = document.getElementsByClassName('destination')[0].value; 
     endLocDest2 = document.getElementsByClassName('destination')[1].value; 
     endLocDest3 = document.getElementsByClassName('destination')[2].value; 
    } 
    alert(endLocDest1 + endLocDest2 + endLocDest3); 
}; 
} 

我也把這個代碼放到一個小提琴http://jsfiddle.net/6ywm1n6h/3/(目前不返回任何東西)。

在此先感謝!

+0

嘗試: var destBoxes = document.getElementsByClassName(「destination」);對於(i = 0; i Jim 2014-12-02 20:29:42

+0

是否每個州或總共有3個限制? – haim770 2014-12-02 20:32:59

+0

@ haim770它是3 (可以是單個狀態,也可以是多個狀態) – Quinn 2014-12-02 21:12:35

回答

0

在你的jsfiddle,你有jQuery的開啓,假設,嘗試使用...

$(".destination:checked") 

將返回所有選中的;你可以使用它作爲一個數組,並確定哪些被點擊。

編輯: 您可以指定這一個變量,說...

var checked_values = $(".destination:checked"); 

...然後通過循環和你所需要的。

for (var i=0,len=checked_values.length; i<len; i++) { 
    console.log(checked_values[i].attr("id")); 
} 
+0

可以請你詳細闡述一下這之後需要做些什麼?我對javascript和jquery有點新東西 – Quinn 2014-12-02 21:28:15

+0

謝謝,這對我很有用 – Quinn 2014-12-03 00:16:45

0

如果您的代碼被包裹在<form>並且當表單提交(normaly或AJAX'ed)</form>然後檢查輸入將被自動發送。你的錯誤是你沒有設置namevalue s到你的複選框。嘗試:

<input type="checkbox" name="airport[alabama][]" value="Birmingham"> 
<input type="checkbox" name="airport[alabama][]" value="Huntsville"> 
<input type="checkbox" name="airport[alaska][]" value="Anchorage"> 
<input type="checkbox" name="airport[alaska][]" value="Fairbanks"> 

,看看print_r($_POST)print_r($_GET)(取決於你的形式方法)的頁面接收表單提交。

+0

我其實不是故意使用

元素,因爲在發送ajax調用之前,我必須使用一堆其他嵌套信息創建JSON數據的自定義數組(我拿出其他信息來簡化問題)。其他建議? – Quinn 2014-12-02 21:17:35

+0

You不需要其他建議,因爲解決方案已經發布在這裏了。總結:設置'value'屬性爲複選框並選擇th em用'$(':'')'。 – 2014-12-02 22:13:14