我正在使用以下示例映射名称属性:input。我必须在map()中放置一个条件语句,以确定是否选中了复选框并返回true或false。但现在我没有得到选择选项名称attr。我觉得它需要更多的代码编写。获取所有名称属性并查看已签入复选框的有效方法是什么。查看http://jsfiddle.net/gVHaQ/3/
上的示例<form>
<input type="text" name="name" value="John"/>
<input type="text" name="password" value="password"/>
<input type="text" name="url" value="http://domain.org/"/>
<select>
<option name="one">1</option>
<option name="two">2</option>
<option name="three">3</option>
</select>
<input type="checkbox"/>
</form>
<p></p>
$("p").append($(":input").map(function() {
if ($(this).attr('type') == 'checkbox') {
return $(this).attr('checked');
}
else {
return $(this).attr('name');
}
}).get().join(", "));
这是归还的内容 name,password,url,true
答案 0 :(得分:1)
也许这就是你想要的?
$("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(", "));
答案 1 :(得分:1)
如果您仍想使用map():http://jsfiddle.net/PmDr9/,则可以避免使用地图两次。
但是如果你想跳过map(),我想你可以尝试的一种方法是$('form')。serialize()。获得序列化字符串后,可以使用regex表达式替换不需要的数据。但请注意,您需要为和提供名称。这是一个例子:http://jsfiddle.net/JKuZE/1/。 (注意:我的正则表达式不是那么好,所以也许你可以玩它并得到你想要的结果。)
我不知道第二个实现是否符合您的要求,但这是一个建议。