0

「ddlCaseFiles」という DropDownList があります。次に、イベントをキャプチャする jQuery .change() 関数を含むスクリプトをインポートします。次に、dropDownList を並べ替える 3 つのラジオ ボタンがあります。デフォルトのラジオ ボタンが読み込まれると、イベントが発生します。しかし、別のラジオ ボタンを選択するとすぐに、イベントは発生しなくなります。

ここに私のドロップダウンリストがあります:

<asp:DropDownList runat="server" ID="ddlCaseFiles" DataSourceID="dsMyCaseFiles" 
DataTextField="Display" DataValueField="FileID" OnPreRender="ddl_PreRender" />

ここに私のjQuery .change()があります:

 $('#ddlCaseFiles').change(function () {
    debugger;
    $('#lblNextExhibitNumber').text('');
    var temp = $(this).val();
});

以下は、ラジオ ボタンの機能の抜粋です。

    protected void rbByFileName_CheckedChanged(object sender, EventArgs e)
{
    ddlCaseFiles.DataSourceID = "dsCaseFilesReverse";
    ddlCaseFiles.DataTextField = "Display";
    ddlCaseFiles.DataValueField = "FileID";
}

protected void rbByFileID_CheckedChanged(object sender, EventArgs e)
{
    ddlCaseFiles.DataSourceID = "dsCaseFiles";
    ddlCaseFiles.DataTextField = "Display";
    ddlCaseFiles.DataValueField = "FileID";
}

以前に .change() を使用したことがありません。だから多分私は何かが欠けている

4

2 に答える 2

7

ラジオ ボタンの CheckedChanged イベントがドロップダウン変更イベントをトリガーしないようです。ドロップダウンの選択された値が変更されると、JS 変更イベントが発生します。これは、 を変更したときに必ずしも発生するとは限りませんDataSourceIDね。

ASPでこれをトリガーする方法がわかりません。おそらくddlCaseFiles.SelectedIndexChanged()

それ以外の場合は、クリック イベント ハンドラーをラジオに追加できます。

$('input[type="radio"].someCssClass').click(function(){
   $('#ddlCaseFiles').trigger('change');
});

編集:

これは単なる推測ですが、 がページ上の要素をCheckedChanged変更しているように見えます。<select>たとえば、DataSourceID変更のたびに再挿入されますか?

.on()関数を使用して、ドロップダウン変更イベント ハンドラを次のように変更してみてください。

$('body').on('change', '#ddlCaseFiles', function () {
    debugger;
    $('#lblNextExhibitNumber').text('');
    var temp = $(this).val();
});

注: パフォーマンスを向上させる$('body')には、ドロップダウンに近いコンテナに変更してください。

この関数は、ハンドラーをページ上の要素に.change()アタッチします。changeASP が要素を削除し、後で再度追加すると、ハンドラはなくなります。

関数を使用してアタッチされたハンドラー.on()は、要素が削除されても存続します。詳しくはこちらをご覧ください。

于 2012-11-01T14:03:27.607 に答える