2012-05-02 10 views
2

チェックボックスをオンにすると、毎月贈り物として贈り物を送信します。チェックボックスがオフの場合、ギフトは1つの贈り物です。私が持っているものチェックボックス:jQueryで検出を確認しました

:私がチェックした場合に表示する必要がどのような

<div id="monthly-right"> 
    <input type="checkbox" name="level_autorepeat" id="level_autorepeat" value="false" /> Yes, automatically repeat this gift every year on this date.</div> 
<div id="donation-length"></div> 

<div id="monthly-right"><input type="checkbox" name="level_autorepeat" id="level_autorepeat" value="false" /> Yes, automatically repeat this gift every year on this date.</div> 
<div id="donation-length"> 
    <input type=hidden name="sustaining.frequency" id="sustaining_frequency" value="monthly" /> 
    <input type="hidden" name="sustaining.duration" id="sustaining_duration" value="0" /> 
</div> 

とバックこれはあなたのチェックボックスが「チェックされているかどうかをチェックすることができますどのようにチェックを外し

+0

をしますか? –

+0

ラジオボタンをチェックボックスに変更してもよろしいですか? –

+0

ユーザーに表示されない非表示入力を追加するだけです。 – TikaL13

答えて

4

私はあなたが実際に入力を参照するか、単にユーザーが表示されません隠し入力を追加したいん

$('#check').click(function() { 
    var type = $(this).is(':checked') ? "checkbox" : "radio"; 
    var input_r_or_c = $('<input />', { 
     type: type, 
     name: "level_autorepeat", 
     id: "level_autorepeat", 
     value: "false" 
    }); 
    if ($(this).is(':checked')) { 
     var input1 = $('<input />', { 
      type: "hidden", 
      name: "sustaining.frequency", 
      id: "sustaining_frequency", 
      value: "monthly" 
     }); 
     var input2 = $('<input />', { 
      type: "hidden", 
      name: "sustaining.duration", 
      id: "sustaining_duration", 
      value: "0" 
     }); 
     $('#donation-length').append(input1).append(input2); 
    } else { 
     $('#donation-length').empty(); 
    } 
    $('#monthly-right input').replaceWith(input_r_or_c); 
}); 

http://jsfiddle.net/vKLWA/1/

+0

彼は自分の質問にタイプミスがありますか? 2つのチェックボックス/ラジオボタンを使ってこの作業を行うための使用モデルとは何ですか?あなたの答えは、彼のhtmlが示唆しているものとまったく同じですが、ちょうど...奇妙なようです。 –

+0

@JeffBはいそれは奇妙ですが、それは彼が尋ねたものです。彼が私のコードを変更する別のものを意図した場合:) –

+0

私は理解しています。あなたの答えを批判しているわけではなく、仲間の答えに声をかけて驚いています。 –

0

場合'jqueryを使用して:

$('#your_checkbox_id').is(':checked'); 
+0

チェックされていない場合はどうすれば確認できますか?これらの情報を非表示にすると、これらの隠し入力をフォームに追加しないでください。 – TikaL13

0

あなたはこれらの隠された入力の場合は、私が上でこれを行うだろう

$('#donation-length').hide(); 
if ($('#level_autorepeat').is(':checked')){ 
    $('#donation-length').show(); 
} 
0

をお試しくださいサーバ側。そうしないと、JavaScriptが無効になっている場合、ユーザーはチェックボックスが何もしていないということを知らず、意図せずに1回または繰り返し発生する可能性があります。

隠し入力を非表示にしても、送信時にサーバーに送信されるかどうかには影響しません。 DOMから実際に削除するか、現在のフォームの外に移動する必要があります。

基本的に隠れた入力を送信しますが、サーバー側ではチェックボックスの値が設定されていない限り頻度と期間は無視されます。

あなたはまだ、とにかくJavaScriptでそれをしたい場合は、あなたがこれを行う必要があります:

var freq = '<input type=hidden name="sustaining.frequency" id="sustaining_frequency" value="monthly" /><input type="hidden" name="sustaining.duration" id="sustaining_duration" value="0" />'; 

$('#monthly-right').on('change', '#level_autorepeat', function() { 
    if($(this).is(':checked')) { 
     $('#level_autorepeat').html(freq); 
    } else { 
     $('#level_autorepeat').html(""); 
    } 
} 

他の回答には、チェックボックスがチェックされているかどうかを確認する方法をお見せしますが、あなたが本当にのために監視する必要がありonchangeハンドラを使用して変更すると、.on()によって行われます。親にハンドラをアタッチし、チェックボックスが変更されたときに監視します。このチェックボックスをオンにすると、divに周波数/継続時間コード(変数に格納されている)を追加します。それ以外の場合は、div内のHTMLをクリアします。フォームの外にある別のdivに内容を保持し、内容をdivに移動/コピーするなど、いくつかの方法があります。

1

を使用することができ、この

$('#checkBox').attr('checked');

(または)

$('#checkBox').prop('checked');

+0

説明をありがとうございます。残念ながら、これはクライアントサイドで行われなければならないので、ユーザーはJavaScriptを有効にする必要があります。私はこれを試して、これが私にとってうまくいくかどうかを見極めるつもりです。再度、感謝します! – TikaL13

関連する問題