2017-12-22 13 views
0

このコードは、初回起動時にチェックボックスがオンになっているかどうかを切り替えて、ユーザーの選択に基づいて値を変更する必要がある、購読解除フォーム用です。テキストボックスの値を変更するJavaScript

基本的に私は電子メールプラットフォームを通じてhtmlに値を渡しています。値がIの場合、チェックボックスと値Iがチェックされます。値がOの場合、チェックボックスはチェックされず、値Oがチェックされるべきではありません。

データが電子メールプラットフォーム値を取得するために隠れた入力を使用する必要があります。そうしないと、実際にIまたはOが返されません。

私は頭の中でタグとして持っているのJavaScript(HTMLメール)

var initValue = function() { 
    var permStat = document.getElementById("emailPref").value 
    if(permStat === "I"){ 
     document.getElementById("checkbox").checked = true; 
    } else { 
     document.getElementById("checkbox").checked = false; 
    } 
    } 
    var changeValue = function(){ 
    var optValue = document.getElementById("checkbox").value; 
    if(optValue === "I"){ 
     document.getElementById("checkbox").value = "O"; 
     document.getElementById("emailPref").value = "O"; 
     document.getElementById("checkbox").checked = false; 
    } else { 
     document.getElementById("checkbox").value = "I"; 
     document.getElementById("emailPref").value = "I"; 
     document.getElementById("checkbox").checked = true; 
    } 
    } 

スタイルを切り替えるための表示ラベル(使用してCSSのみ)

<input type="checkbox" id="checkbox" name="emailPerm" value="$EMAIL_PERMISSION_STATUS_$" onload="initValue();" onclick="changeValue()"> 
<label class="toggle" for="checkbox"></label> 

隠し入力、私たちの電子メールプラットフォームにデータを戻すもの

<input type="hidden" id="emailPref" name="EMAIL_PERMISSION_STATUS_" value="$EMAIL_PERMISSION_STATUS_$"> 

追加情報が負荷に

I値と、それはこのとして表示されます(これは "O" の値になります):この状態の後、クリックオン

enter image description here

、値は "O"に設定され、スタイリングは同じままです。第二のクリックで、値が適切に「I」とディスプレイに戻っ:

enter image description here

**これは明らかに間違いがある場合、私は通常、HTMLメールではなく、以来、JavaScriptを使用することはできませんので、私は、事前に謝罪これは技術的にリンク先ページとして表示され、機能します。

ありがとうございます!

+0

サーバーからのデータで隠れた入力を設定している場合、同じデータに応じてチェックされた入力を作成するだけでは簡単ですか? – zfrisch

+0

@zfrischはい、それがinitValue関数の目的です。チェックした値を調整することは、その値を引いて_supposed_を引っ張っていますが、そうではありません –

答えて

1

問題はonloadがチェックボックスの有効な属性ではないことです。このため、initValueは実行されません。要素の下にあるようなスクリプトタグを追加します。

<script> 
// self executing function here 
(function() { 
    initValue(); 
})(); 
</script> 
関連する問題