如何将未选中的值定义为复选框?

时间:2016-08-08 12:49:05

标签: javascript jquery html checkbox

我正在尝试为“未选中”设置默认值,但无效。我想要它。如果checked stores ='Yes',如果未选中stores ='No'。我不知道为什么不工作。数据库中的输入始终插入值为“是”。即使他们检查或取消选中。

<input type="hidden" name="imagem" value="no" />
<input id="imagem" type="checkbox" value="yes" >Imagem<br />

<input type="hidden" name="som" value="no" />
<input id="som" type="checkbox" value="yes" >Som<br />

<input type="hidden" name="animacao" value="no" />
<input id="animacao" type="checkbox" value="yes" >Animação<br />


<button type="button" id="enviar">Cadastrar</button><br />

<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script>
    $( document ).ready(function() {
        $( "#enviar" ).click(function() {
            var vjson = {};
            $( "input" ).each(function( index ) {
                vjson[$( this ).attr("id")] = $( this ).val();
            });
             // console.log(JSON.stringify(vjson));
              $.post('<%=request.getContextPath()%>/testeform', { json: JSON.stringify(vjson), email : vjson.email}, 
                    function(returnedData){
                         console.log(returnedData);
                });
        });
    });
</script>

2 个答案:

答案 0 :(得分:1)

首先

vjson[$( this ).attr("id")] = $( this ).val();

由于您的复选框没有id属性,因此迭代时该输入的值将设置为名为"undefined"的属性。

您可以检查复选框是否已选中,是否使用复选框值,如果它不是通过使用ID选择器获取隐藏的输入

$( "input[type=checkbox]" ).each(function() {
   vjson[this.name] = $(this).is(":checked") ? this.value : $( "#"+this.name ).val();
});

当然你可以使用单选按钮。如果您为它们指定相同的名称,则一次只能检查一个名称。然后只需使用:checked选择器获取正确的选择器并获取其值:

<input type="radio" name="som" value="no">
<input type="radio" name="som" value="yes">

var value = $("input[name=som]:checked").val();

或者您可以使用serialize()serializeArray()让jQuery查找表单的所有值,并将它们放入名称/值对查询或值数组中。如果你必须将它作为JSON文本发送,那么只需将其转换为JSON。

演示

&#13;
&#13;
$("button").click(function() {
  var data = $("form").serializeArray();
  data = data.reduce(function(values,item){
    values[item.name]=item.value;
    return values;
  },{})
  console.log(JSON.stringify(data));
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form>
  <input type="radio" name="imagem" value="no" />
  <input type="radio" name="imagem" value="yes">Imagem
  <br />

  <input type="radio" name="som" value="no" />
  <input type="radio" name="som" value="yes">Som
  <br />

  <input type="radio" name="animacao" value="no" />
  <input type="radio" name="animacao" value="yes">Animação
  <br />
</form>
<button>Send</button>
&#13;
&#13;
&#13;

答案 1 :(得分:-1)

我希望这个帮助你

   <script type="text/javascript">
           function check() {

               $(document).ready(function () {

                   if($("#ContentPlaceHolder1_chk_boothid").prop('checked') == true)
                   {
                       $('input[type=checkbox][id*=ContentPlaceHolder1_chk_booth_]').each(function () { this.checked = true; });

                   }
                   else 
                   {
                       $('input[type=checkbox][id*=ContentPlaceHolder1_chk_booth_]').each(function () { this.checked = false; });

                   }
               });
           }
                   </script>