Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过jQuery检索选中输入框值的更好方法?_Javascript_Jquery - Fatal编程技术网

Javascript 通过jQuery检索选中输入框值的更好方法?

Javascript 通过jQuery检索选中输入框值的更好方法?,javascript,jquery,Javascript,Jquery,我有几个复选框和一个假提交按钮来发出AJAX请求: <form> <input type="checkbox" value="1"/> <input type="checkbox" value="2" checked="checked"/> <input type="checkbox" value="3"/> <input type="checkbox" value="4" checked="checked"/

我有几个复选框和一个假提交按钮来发出AJAX请求:

<form>
    <input type="checkbox" value="1"/>
    <input type="checkbox" value="2" checked="checked"/>
    <input type="checkbox" value="3"/>
    <input type="checkbox" value="4" checked="checked"/>
    <input type="button" onclick="return mmSubmit();"/>
</form>
我想知道jQuery中是否有一个速记方法用于将值检索到数组中,或者我的方法是否已经是最佳的。

那么您可以使用.val()而不是.attr('value')


$.serializeArray()也可以做您想做的事()。

我认为这可以通过map实现。试试下面的方法

mmSubmit = function() {
    var ids = $('input[type=checkbox]:checked').map(function(){
       return $(this).val();
    }).get();
    // ids now equals [ 2 , 4 ] based upon the checkbox values in the HTML above
    return false;
};

看看:

它需要一些优化,但一般来说这是正确的方法。我的变体:

mmSubmit = function () {
    var ids = [];
    $('input[type=checkbox]').each(function () {
        if (this.checked) {
            ids[ids.length] = this.value;
        }
    });
    return ids;
};

速度快了一点。

我不知道您的实际代码中是否有这样的代码,但以防您输入错误:选中后不需要分号'。每个(抱歉,它不在我的实际代码中,这只是将我的代码复制到问题中的一个错误。不过感谢您指出这一点!根据Quintin Robinson的回答,我认为map()函数就是我要寻找的,但是val()和serializeArray()方法肯定很值得了解,谢谢!)
mmSubmit = function () {
    var ids = [];
    $('input[type=checkbox]').each(function () {
        if (this.checked) {
            ids[ids.length] = this.value;
        }
    });
    return ids;
};