2016-08-08 23 views
0

私はデフォルト値を 'unchecked'に設定しようとしていますが、動作していません。私はそれが欲しかった。チェックされたストア= 'はい'、チェックされていない場合はストア= 'いいえ'。私はなぜ働かないのか分からない。データベースの入力は常に値 'Yes'で挿入されます。彼らはチェックしたり、チェックを外していました。チェックボックスに未チェックの値を定義する方法は?

<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> 
+1

jqueryのコードは? –

+1

デフォルト値は、valueパラメータで指定された値になります。あなたの場合、あなたはそれを「はい」と指定しています。値を変更しない限り、そのまま維持されます。 –

+0

隠された入力とチェックボックスには何も共通点がありません....あなたは正確に何を期待していますか? – epascarello

答えて

-1

あなたのチェックボックスが繰り返し処理時にその入力のためにあなたの価値を属性idなしがに設定されようとしている必要がありますので、私はあなたが

<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> 
+1

この回答のコードは、質問のマークアップとは関係ありません。 – Pointy

1

まず

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

この1人の助けを願っていますプロパティ"undefined"

それはIDセレクタあなただけ使用することができます。もちろん、

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

を使用して非表示の入力を取得されていない場合には、チェックボックスの値を使用している場合は、チェックボックスがチェックされているかどうかを確認することができますラジオボタン。同じ名前を付けると、一度に1つしか確認できません。それからちょうど右の1を取得し、その値を取得するために:checkedセレクターを使用します。

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

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

それとも、単にjQueryのフォームのすべての値を検索し、名前/値のペアに入れて持ってserialize()またはserializeArray()を使用することができますクエリ、または値の配列です。 JSONテキストとして送信する必要がある場合は、どちらか一方をJSONに変換してください。

デモ

$("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)); 
 
});
<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>

関連する問題