0

私は次の問題を修正するために約2時間グーグルしてきました(他のStackoverflowの質問が含まれています):

<script type="text/javascript">
    jQuery(document).ready(function() {
        jQuery('input[type="radio"]').unbind('click.preset')
        .bind('click.preset', function() {
            doingStuffWith(jQuery(this).val());
        });
    });
</script>

<input type="radio" name="lightType" value="led" />
<input type="radio" name="lightType" value="tube" />

ご覧のとおり、ラジオボタングループ「lightType」の現在の値を取得して操作しようとしています。これはFirefox/Safari / Chromeの魅力のように機能しますが、IE8は空の文字列を返すだけで苦労しています。

変更イベントをラジオボタンにバインドしたり、クリックしたラジオボタンをぼかしてIE8に強制的に起動させたりするなど、他の質問からいくつかのハックをすでに試しました。たぶん、今は失明に苦しんでいます。

私は最新のjQueryバージョンで作業しており、他のバインドされたイベントが干渉しないことを確認しました。興味深いことに、値を取得する前にalert()を追加すると、IEは現在の値を返します。

....
// DOES WORK
alert();
alert(jQuery(this).val()); // alerts e.g. "tube"

// DOESN'T WORK
alert(jQuery(this).val()); // alerts ""

タイミングの問題かもしれないと思いましたが、setTimeoutを使用して単一のアラート呼び出しを遅らせようとしても役に立ちませんでした。

事前のおかげで、私はただ盲目で、IE8で別の醜い振る舞いを見つけられなかったことを願っています。

4

3 に答える 3

0

コールバックで最新のjQueryとセレクターを使用on():checkedます。

jQuery(document).ready(function() {
    jQuery('input[type="radio"]').on(function('change blur mousedown click') {
         alert(jQuery('input[type="radio"]:checked').val());
    });
});

実際、これは少し注意が必要です。コールバックで「this」を使用して選択したラジオボタンをフェッチすることはできません。他のセレクターを使用する必要があります 。jQueryを介してどのラジオボタンが選択されているかを知るにはどうすればよいですか。

于 2013-03-21T00:26:04.653 に答える
0

回答ありがとうございますが、うまくいきませんでした。これがjQueryのバグなのか、特定のケースで発生した問題なのかはわかりません。jQueryは、フィールドが実際に変更される前にIE8に変更イベントを発生させているようです。

私はついにblurイベントにバインドし、powtacsと組み合わせることでそれを解決しました:次のようなチェックされたソリューション:

<script type="text/javascript">
jQuery(document).ready(function() {

   jQuery('input[type="radio"]').unbind('click.preset')
   .bind('click.preset', function() {
       jQuery(this).blur();
   }

   jQuery('input[type="radio"]').unbind('blur.preset')
   .bind('blur.preset', function() {
        doingStuffWith(jQuery('input[type="radio"]:checked').val());
    });
});
</script>
于 2013-03-28T10:10:47.690 に答える
0

IE8の適切なオプションは、各ラジオオプションにクラス(!)を作成し、それを使用してチェックされたオプションを選択することです。意味的には少し奇妙ですが、私には完全に機能しました。

HTML

<input type="radio" name="example" class="example_class" value="1"/>#1
<input type="radio" name="example" class="example_class" value="2"/>#2
<input type="radio" name="example" class="example_class" value="3"/>#3

JS

var exampleValue = $('.example_class:checked').val();
于 2017-04-13T18:43:36.423 に答える