我想用jQuery获取所有输入字段的值。我可以用以下代码来做到这一点。但是,如果输入字段为复选框,并且已选中,则会返回“ on ”。如果选中,如何将值设为 1 ?
jQuery的:
$('button').click(function() {
inputs = $('.input');
inputs.each(function() {
var value = $(this).val();
alert(value);
});
});
HTML:
<input type="text" class="input" />
<input type="text" class="input" />
<input type="checkbox" class="input">
<button>Get values<button>
答案 0 :(得分:28)
您需要检查元素的类型是否相等checkbox
:
if( $( this ).attr( 'type' ) === 'checkbox' ) {
value = +$(this).is( ':checked' );
}
提示:+
符号会将布尔值转换为整数:1/0
查看更新的jsFiddle
答案 1 :(得分:3)
<强> DEMO 强>
var input = $('.input');
$('button').click(function() {
input.each(function() {
var val = this.type=="checkbox" ? +this.checked : this.value ;
alert( val );
});
});
做什么:
this.type=="checkbox" // Test if HTMLElement type is checkbox // (Boolean)
?
+this.checked // if true // using '+', set boolean (true/false) to int (0/1)
:
this.value // if false // just get the value
;
答案 2 :(得分:1)
使用.is(':checked')而不是获取值。 如果选中,则会将其作为布尔值返回,而不是“打开”。
答案 3 :(得分:1)
你可以试试这个。
$('button').click(function() {
inputs = $('.input');
inputs.each(function() {
var value;
if( $( this ).attr( 'type' ) === 'checkbox' ) {
value = $(this).is( ':checked' ) ? 1: 0;
}else
{
value = $(this).val();
}
alert(value);
});
});
答案 4 :(得分:1)
inputs.each(function () {
if($(this).attr('type') == "checkbox") {
value = $(this).prop('checked') == false ? 0: 1;
}
else {
value = $(this).val();
}
alert(value);
});
答案 5 :(得分:0)
因为您没有提到checkbox的任何值。请尝试:
<input type="checkbox" class="input" value="1">