2012-03-15 5 views
1

チェックボックスの横にあるラベルをクリックしてフォームを送信します。だから私は以下の単純な関数を作成しました。 HTMLコード:フォームを送信する前にチェックボックスを切り替えます

<input class="myinput" type="checkbox" name="photo"id="photo" value="1" /> 
<label class="autosend" for="photo">Photos</label> 
<input class="myinput" type="checkbox" name="text"id="photo" value="1" /> 
<label class="autosend" for="text">Text</label> 

のjQueryコード:

$('.autosend').click(function() { 
$('form#search').submit(); 
}); 

主な問題がある - ラベルのフォームをクリックした後に送られますが、確認のチェックボックスなしています。何故ですか?私は私のWebブラウザで、チェックボックスが送信前に数秒間だけチェックされていることを確認します。上記のjqueryコードを使用して、特定のラベルに属するチェックボックスをオンまたはオフにする方法はありますか?

私は、フォームを送信する前に、追加の行を追加することができます知っている:

$(this).prev(".myinput").attr('checked','checked'); 

しかし、私は(状態とチェックされ、チェックされていない)以前の入力がチェックされているかどうかを確認する必要があり、ちょうど切り替えるのでそれは、解決策ではありません。

+0

テキストをチェックしたときに写真をチェックしないようにしたいですか?もしそうなら、ラジオは良くないでしょうか? – scott

答えて

1
$('input:checkbox').change(function() { 
$('form#search').submit(); 
}); 
+0

うわー、それはとても簡単でした。うまくいく。どうもありがとうございます! – Lucas

2

あなたは、チェックボックスの変更イベントでフォームを送信することができますlabel要素の全てfor属性の

$('input[name=text]').on('change', function(){ 
    $(this).parents('form').submit(); 
}); 
+0

それは良い解決策ですが、私は "テキスト"という名前のものより多くの入力を持っています。 – Lucas

+0

テキスト入力だけでなく、両方のチェックボックスにも表示されます。 –

+0

ああ、大丈夫です。だからそれは良い解決策です。あなたに投票してください。 – Lucas

0

まず、関連入力のidに設定する必要があります。

<input class="myinput" type="checkbox" name="photo" id="photo" value="1" /> 
<label class="autosend" for="photo">Photos</label> 

<input class="myinput" type="checkbox" name="text" id="text" value="1" /> 
<label class="autosend" for="text">Text</label> 

は、第二に、あなたは、キーボード入力を介しボックスを選択するユーザーをカバーするために changeイベントを使用する必要があります。また、ボックスは、チェックを外していないがチェックされていることを確認するためにチェックする必要があります

$('input:checkbox').change(function() { 
    if ($(this).is(":checked")) { 
     $('form#search').submit(); 
    } 
}); 

Example fiddle

0

<label>要素のfor属性がIDに対応するという問題があります。yそれを参照してほしい。ラベルとチェックボックスが接続されていないため、ラベルをクリックしてもチェックボックスは切り替わりません。

+0

はい、私はそれを持っている、私はここにコードに入れて忘れてしまった。しかし、私はすでに他の誰かが以下の解決法を見つけました。ご回答ありがとうございます。 – Lucas

関連する問題