HTML 复选框元素未将值传递给 jQuery 和 AJAX 字符串

Posted

技术标签:

【中文标题】HTML 复选框元素未将值传递给 jQuery 和 AJAX 字符串【英文标题】:HTML checkbox element not being passed value into jQuery and AJAX string 【发布时间】:2013-01-26 15:35:23 【问题描述】:

我有一个带有几个复选框的简单 html 表单。我的目标是将此数据(复选框的值)传递给一个 jQuery 函数,并将这些值输入到一个字符串中,该字符串将通过 Ajax 传递给一个 php 脚本。这是我的html:

     <table class="ui-widget-content" border="0" style="width: 100%;">
            <tr>
                <td >PVC's Required</td>
                <td align="left">
                        <input type="checkbox" id="pvc" name="pvc" value="abc" />abc<br />
                        <input type="checkbox" id="pvc" name="pvc" value="def" />def<br />
                        <input type="checkbox" id="pvc" name="pvc" value="ghi" />ghi<br />                            
                        <input type="checkbox" id="pvc" name="pvc" value="jkl" />jkl<br />
                        <input type="checkbox" id="pvc" name="pvc" value="NONE" />NONE<br />
                </td>           
            </tr>
</table>

jQuery:

$("#addTechDetails")
                    .button()
                    .click(function()

                        var pvc = $("#input[ type= 'checkbox']");
                        var pvcData = [];
                        pvc.filter(':checked').each(function()
                            pvcData.push($(this).val());
                        )
                        pvc=pvcData.join(',');

                        //initial info required to process form
                        var newOrExisting = $("#newOrExisting").val();      
                        var numCircuits = $("#numCircuits").val();          

                            var str = "newOrExisting="+newOrExisting+"&numCircuits="+numCircuits+"&pvc="+pvc;

                                     //ajax request
                            $.ajax(
                                type : "POST",
                                cache : false,
                                url : "ajax/addTechDetails.php",
                                data : str,
                                complete : function(xhr, result)
                                    if (result != "success") return;
                                    var response = xhr.responseText;                                    
                                    $("#result").html(response);
                                
                            )
            );

即使选中某些选项,上面的输出也如下:'','','','',

【问题讨论】:

您没有 ID 为 #newOrExisting#numCircuits 的元素,那么您希望如何获得值?所有的复选框都有相同的 ID,这是一个错误! 在我的脑海中,复选框的名称属性应该是pvc[],而不仅仅是pvc 【参考方案1】:

输入选择器的开头不应该有 #。那是一个 id 选择器。你应该只有 input[type='checkbox']

.. 如上所述,复选框不能具有相同的 id。

【讨论】:

【参考方案2】:

您的复选框需要唯一的 ID:

<input type="checkbox" id="pvc1" name="pvc" value="abc" />
<input type="checkbox" id="pvc2" name="pvc" value="def" />
...

此外,var pvc = $("#input[ type= 'checkbox']"); 这一行不应包含前导 #,因为它用于通过 Id 进行标识(而 input 不是 Id)。

您可以使用以下方法之一:

$('input[type="checkbox"]:checked').each() 迭代所有选中的元素 $('input[name="pvc"]:checked').each() 按名称迭代所有复选框 $('#pvc'+indexOfiteration).val() 直接从Id获取值

文档中有更多选项。

【讨论】:

以上是关于HTML 复选框元素未将值传递给 jQuery 和 AJAX 字符串的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 中的 Ajax Jquery 未将值保存到数据库

Vue组件中的jQuery插件:无法将值传递给prop

react-hook-form 的 DefaultValues 未将值设置为 React JS 中的输入字段

通过jQuery ajax调用将值列表传递给django视图

将值传递给 LWC 中的闪电输入标签

从简单模式窗口将值从 asp.net 复选框或文本框传递到服务器时遇到问题