1

YUI3Internet Explorer 8 と Firefoxを使用しています。ラジオボタンの選択がいつ変更されたかを判断しようとしています。

私のHTML:

<div id="test">
     <input name="test1" value="a" type="radio">
     <input name="test1" value="b" type="radio">
     <input name="test1" value="c" type="radio">
</div>

私のJavaScript:

YUI().use('event', 'node', function (Y) {
     Y.one('input[name=test1]').on('change', function (e) {
          alert('changed');
     });
});

ページがロードされず、ラジオ ボタン グループで何も選択されていないため、これは機能しません。最初のアイテムを選択しても何も起こらず、アラートもポップアップしません。2番目のボタンをクリックすると、ポップアップします。ラジオ ボタンの選択が変更されたことを確認するにはどうすればよいですか?

また、選択したラジオボタンの値を取得するにはどうすればよいですか?IEの問題があると思いますか? これは爆撃します:

var value = Y.one('input[name=test1]:checked').get('value');
alert(value);

そして、これは何も返しません:

var value = Y.all('input[name=test1]:checked').get('value');
alert(value);
4

1 に答える 1

2

イベント委任を使用して、「クリック」イベントをリッスンできます。イベント デリゲーションとは何かがわからない場合は、この短い紹介をご覧ください。古いブラウザーでは change イベントに問題があるため、クリック イベントに固執してください。親要素を取得Y.oneして委任リスナーを設定するだけです。

YUI().use('node', function (Y) {
  Y.one('#test').delegate('click', function (e) {
    alert(e.target.get('value'));
  }, 'input[type=radio]');
});
于 2013-03-04T15:03:16.740 に答える