0

javascript 関数への onchange 呼び出しを含む非表示の選択要素があります。

ユーザーがページのボタンをクリックすると、以下のコードが実行され、選択フォームが表示されます。

$("#moreDetails2").show();
$('#moreDetails2').trigger("create");

ただし、表示された後は、JavaScript 関数は実行されません。非表示ではないことをテストしましたが、動作します。

<div id = \"moreDetails2\">  
                    <select  onchange=\"moreDetails2($userID,'$id')\">

                        <option value=\"0\">More Options</option>
                        <option value=\"1\"> View Taste Profile</option>
                        <option value=\"2\"> Add Taste Tags</option>

                    </select>
                </div>

クロムの検査要素を見ると、エラーは発生しません。

4

2 に答える 2

1

jQuery Mobile は onchange="... または onclick="... イベント バインドではうまく動作しません。次のように手動で行う必要があります。

$(document).on('pagebeforeshow', '#index', function(){       
    $(document).on('click', '#test-button', function(){     
        $("#moreDetails2").show();
        $("#moreDetails2 select").css('display','block').selectmenu('refresh');
    });    

    $("#moreDetails2 select").on( "change", function(event, ui) {
        moreDetails2('aaaa');
    });    
});

function moreDetails2(text) {
    alert(text);
}

コードから作成された動作中の jsFiddle の例を次に示します: http://jsfiddle.net/Gajotres/DpdXY/

于 2013-02-08T14:35:58.387 に答える
0

グローバル関数名と要素識別子として同じ名前を使用すると、Chrome、Safari、および IE (Firefox ではなく) で問題が発生します。

イベント ハンドラの関数名を「moreDetailsTwo」などに変更してみてください。

windowChrome、Safari、および IE は、「id」値を持つ各要素のグローバル シンボル (つまり、プロパティ) を作成します。それが「moreDetails2」関数のバインディングを破壊していると思われます。

于 2013-02-08T13:48:00.233 に答える