0

ボタンを非表示にし、クリックされた画像に応じて選択することで、ラジオボタンの画像置換を使用しています。

画像がクリックされたら、ラジオ ボタンを選択して送信してもらいます。

これは私の元のコードです:

$('#settings img').click(function() {
  $(this).parent().find(":radio").attr('checked', true);
});

これは、画像をクリックして送信すると機能します。

クリック時にフォームを送信するように拡張しました。

$('#settings img').click(function() {
  $(this).parent().find(":radio").attr('checked', true);
  $("#settings").submit();
});

この場合、フォームは送信されますが、値は変更されません。ボタンをクリックして送信すると、正常に動作します。

どこで間違ったのですか?

4

4 に答える 4

1

ここでの問題は、属性trueに与えられた値でしたchecked

提供されているjsfiddleは Chrome で動作します。しかし、Firefoxにはありません。Firefox でも機能させるにcheckedは、属性の値を使用しcheckedます。

$('#settings img').click(function() {
  $(this).parent().find(":radio").attr('checked', 'checked');
});

別の方法として、DOM 要素のプロパティを (同様に)直接操作することもできます。checked

$(this).parent().find(":radio").get(0).checked = true;
于 2013-05-17T14:18:31.790 に答える
-1

最良の答えではないかもしれませんが、画像に置き換えることができるクラスを指定すると、 #settings img を .image にすると機能します

于 2012-10-23T13:56:47.577 に答える
-1

Javascript は非同期です。jQueryがチェックボックスをチェックする前に、フォームが送信されているようです。送信をコールバックに入れてみてください:

$('#settings img').click(function() {
  $(this).parent().find(":radio").attr('checked', true).one('change', function(){
     $("#settings").submit();
  });
});
于 2012-10-23T13:45:44.787 に答える
-2

私はあなたの問題をフォークしました: http://jsfiddle.net/fC38V/そしていくつかの追加を行いました:

$('#settings').submit(function(){
    alert($(this).serialize());
});

$('#settings img').click(function() {
    $(this).parent().find(":radio").attr('checked', true);
    $("#settings").submit(); // submits form on click
});​

クリック ハンドラーの前にサブミット ハンドラーを追加し、フォークされたフィドルをテストすることで、ブラウザー (Mac OS X 10.8 の Safari 6.0.1) で意図したとおりに (説明からわかる限り) 動作することのみを確認できます。

次のことを確認してください。

  1. ネストフォームはありません。ブラウザはこれについて非常にうるさいことがあります。
  2. ID「#settings」を持つ要素は 1 つだけです

他に考えられる唯一の問題は、ブラウザです...何を使用していますか?

于 2012-10-23T13:44:25.317 に答える