Forms JQuery map()表单输入

Forms JQuery map()表单输入,forms,map,Forms,Map,我正在使用下面的示例映射:input的name属性。我必须在map()中放入一个条件语句,以确定复选框是否被选中并返回true或false。但是现在我没有得到选择选项名称attr。我觉得这需要更多的代码编写。获取所有名称属性并查看签入复选框的有效方法是什么。查看下面的示例: 1. 2. 3. $(“p”).append($(“:input”).map(函数(){ if($(this).attr('type')=='checkbox'){ 返回$(this.attr('checked'); }

我正在使用下面的示例映射:input的name属性。我必须在map()中放入一个条件语句,以确定复选框是否被选中并返回true或false。但是现在我没有得到选择选项名称attr。我觉得这需要更多的代码编写。获取所有名称属性并查看签入复选框的有效方法是什么。查看下面的示例:


1.
2.
3.

$(“p”).append($(“:input”).map(函数(){ if($(this).attr('type')=='checkbox'){ 返回$(this.attr('checked'); } 否则{ 返回$(this.attr('name'); } }).get().join(“,”);
这就是要返回的内容

姓名、密码、url、true

也许这就是你想要的

$("p").append($(":input").map(function() {
    if($(this).is('select')) {
        return $(this).children('option').map(function() {
          return $(this).attr('name');
        }).get().join(", ");
    } else if($(this).attr('type')=='checkbox') {
        return $(this).attr('checked');
    } else {
        return $(this).attr('name');
    }
}).get().join(", "));

如果没有,您可能应该提供预期的输出

编辑:接受的版本


如果仍要使用map(),可以避免使用map两次

但是如果您想跳过map(),我想您可以尝试的一种方法是$('form').serialize()。在获得序列化字符串后,可以使用正则表达式替换不需要的数据。不过请注意,您需要为和提供一个名称。下面是一个例子:。(注意:我的正则表达式不是很好,所以也许你可以使用它并得到你想要的结果)


我不知道第二个实现是否是您想要的,但这是一个建议。

Uhh。。我不知道如果只需要选定的一个,为什么需要map():您的代码类似于Jamie的修订版+1用于JSFIDLE选项。
$("p").append($(":input").map(function() {
    if($(this).is('select')) {
        return $(this).children('option').map(function() {
          return $(this).attr('name');
        }).get().join(", ");
    } else if($(this).attr('type')=='checkbox') {
        return $(this).attr('checked');
    } else {
        return $(this).attr('name');
    }
}).get().join(", "));
$("p").append($(":input").map(function() {
    if($(this).is('select')) {
        return $(this).val();
    } else if($(this).attr('type')=='checkbox') {
        return $(this).attr('checked');
    } else {
        return $(this).attr('name');
    }
}).get().join(", "));