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/(目前不返回任何内容)。

提前致谢!

4

2 回答 2

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"));
}
于 2014-12-02T20:36:54.607 回答
0

如果您的代码被包装,<form>然后</form>在提交表单时(通常或 AJAX)将自动发送检查的输入。您的错误是您没有为复选框设置names 或s 。value尝试:

<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)(取决于您的表单方法)。

于 2014-12-02T20:39:09.997 回答