2011-06-07 11 views
5

チェックボックスの値に応じて、非表示の入力フィールドの値を変更しようとしています。私はJavascriptについてあまりよく分かりませんが、これはこれまで私が行ってきたことです。Javascriptを使用して、チェックボックスのステータスに応じて非表示入力の値を変更するにはどうすればよいですか?

<input type="hidden" value="" id="delterms" name="O_" /> 
<input type="checkbox" id="checkbox" onchange="terms()" /> 
<script type="text/javascript"> 
var checked = document.getElementById('checkbox').checked; 
    function terms() { 
    if (checked==false) 
    { 
    document.getElementById('delterms').value='' 
    } 
    else 
    { 
    document.getElementById('delterms').value='Accepted' 
    } 
} 
</script> 

最初のクリックでのみ動作しますが、チェックボックスのステータスに応じて値を設定しますか?私はいくつかの方法がはるかに単純であると思うし、問題を複雑にすることは間違いありません。 event listener代わりに属性「のonchange」HTMLを使用しての、これがあなたのために物事を明確かもしれないし、おそらく長期的に維持するためにあなたのコードが簡単になります追加

答えて

5

試してみてください。

<input type="hidden" id="delterms" value="" name="O_" /> 
<input type="checkbox" id="checkbox" /> 
<script type="text/javascript"> 
    var checkbox = document.getElementById('checkbox') 
    , hidden = document.getElementById('delterms'); 
    checkbox.addEventListener('change', function() { 
    hidden.value = (this.checked) ? 'Accepted' : ''; 
    }, false); 
</script> 

アイデアはということですユーザがチェックボックスをクリックするたびに無名関数が実行されます。このチェックボックスは、ボックスがチェックされているかどうかに応じて、隠しフィールドの値を "Accepted"か空文字列に設定します。

このjsFiddleは、実例を示しています。

+0

こんにちは、ご回答いただきありがとうございます。私はあなたが言っていることを理解していますが、私が隠しフィールドを更新する方法を理解していない、あなたが精緻化する可能性はありますか? – Dave

+0

@Dave:これを行うためのより信頼できる方法を示すために私の答えを更新しました。それがあなたに合っているかどうかを教えてください。 – maerics

0

変数checkedは1回だけ設定されるため、常にinital値と同じです。あなたの機能の中でそれを動かすterms()

1
ので、関数に変数の代入を移動し

function terms() { 
    var checked = document.getElementById('checkbox').checked; 
    if (checked==false) 
0

は、あなたの関数内フィドルで修正された

<script type="text/javascript"> 

     function terms() { 
     var checked = document.getElementById('checkbox').checked; 
     if (checked==false) 
     { 
     document.getElementById('delterms').value='' 
     } 
     else 
     { 
     document.getElementById('delterms').value='Accepted' 
     } 
    } 
    </script> 
0

チェックボックスがform.submit()彼らがオフのとき、私はチェックボックスがクリックされたときに更新される隠しフィールドを使用して提出されていませんので。 (私はそれが既に確認された場合は、ページをレンダリングするとき、チェックボックス、入力にcheckedプロパティを追加するJSPコードを省略している。)

<input type="hidden" id="chbx" value="" name="0_"> 
<input type="checkbox" id="__chbx" 
    onclick="document.getElementById('chbx').value = 
      document.getElementById('__chbx').checked;"/> 

関連する問題