11

我想用 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>

演示:http: //jsfiddle.net/yDKdT/

4

6 回答 6

33

您需要检查元素的类型是否相等checkbox

if( $( this ).attr( 'type' ) === 'checkbox' ) {
    value = +$(this).is( ':checked' );
}

提示:+符号会将布尔值转换为整数:1/0

查看更新的 jsFiddle

于 2013-11-05T12:13:46.740 回答
4

演示

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
; 

附加阅读:将布尔结果转换为数字/整数

于 2013-11-05T12:16:41.143 回答
1

使用 .is(':checked') 而不是获取值。如果选中,这会将其作为布尔值返回,而不是“开启”。

于 2013-11-05T12:13:15.410 回答
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);
    }); 

}); 

演示

于 2013-11-05T12:18:06.337 回答
1
 inputs.each(function () {
        if($(this).attr('type') == "checkbox") {
            value = $(this).prop('checked') == false ? 0: 1;
        }
        else {
        value = $(this).val();
        }
        alert(value);
    });

JSFiddle

于 2013-11-05T12:20:02.990 回答
0

因为您没有提到任何复选框的值。试试这个:

<input type="checkbox" class="input" value="1">

演示:http: //jsfiddle.net/yDKdT/3/

于 2013-11-05T12:13:38.533 回答