3

setAttribute('checked',true) を使用して radioButton の値を変更すると、ラジオ ボタンの値が変更されますが、change イベントは発生しません。

これは、YUI または AlloyUI に限定されているようには見えません (たとえば、ラジオ ボタン/チェックボックスの状態の変化の検出を参照してください)。

この問題を回避するには、ラジオ ボタンの値を設定するときにプログラムで変更イベントを発生させたいと考えています。

Alloy UIでそれを行うにはどうすればよいですか(Liferay 6.1 GA2を使用しています)?

ありがとうアラン

いくつかの詳細:

html:

<aui:input type="radio" label="${viewMenuItem.label}" value="${viewMenuItem.value}"
   id="${messageWallDisplay.newMessageOptionName}${viewMenuItem.value}"
   name="${messageWallDisplay.newMessageOptionName}" data="${viewMenuItem.dataMap}"
   checked="${viewMenuItem.value == messageWallDisplay.newMessageOptionDefaultValue}"/>

イベント委任の設定 (ラジオボタンでイベント コールバックも試しました):

  messageTypeRadioGroup.delegate('change', function (event){
     var option = event.currentTarget;
     if (option.get("checked")==true){
        showHideUserSelection(option);
     }
  }, 'input[type=radio]');

change イベントをトリガーしない setAttribute:

MWC.newMessageDefaultOption.setAttribute('checked',true);
4

3 に答える 3

2

ここでのこの回答は、あなたが達成しようとしているもののように見えます: Javascript: リンクのクリックをシミュレートする

が無線ノードの場合MWC.newMessageDefaultOption、次のようにすることができます。

MWC.newMessageDefaultOption.simulate('change');

コメントで述べたように、Simulate はテスト目的のためのものです。ベスト プラクティス:

var doThingsOnChangeFunc = function(arg1, arg2) {
    // do things!
}

myNode.on(
    'change',
    function(event) {
        var arg1 = event.currentTarget;
        var arg2 = "something";

        doThingsOnChange(arg1, arg2);
    }
);

その後、ラジオボタン\チェックボックスをプログラムで変更するときにダウンします。

myNode.setAttribute('checked', true);

doThingsOnChange(arg1, arg2);
于 2013-06-06T23:10:46.193 に答える
0

以下のコードを試してください。

var allRadios = A.all( "input[type='radio']" );
        allRadios.on( 'change', function(e) {
            var portletNamespace='<portlet:namespace/>';
            var selectedRadioButtonValue = e.currentTarget.get('value');
            // add your custom code here
    });

上記のコードはすべてのラジオ ボタンに変更イベントを追加し、変更イベントが発生すると関数内のコードを実行します。

さらに何か必要な場合はお知らせください

于 2013-06-11T08:33:24.733 に答える