3

この質問をここに出すことさえばかげているように感じますが、まだ解決策を見つけていません。

これが onchange イベントの本来の動作方法である可能性がありますが、起動するのが早すぎるようです (または、最終的な選択が行われたときに再度起動する必要があります)。画面の一部を更新するために使用する選択/ドロップダウンがありますが、Chrome と IE9 では、ユーザーが入力を開始するとすぐに onchange イベントが呼び出されることがわかりました(マウス選択で正常に動作します)。入力が完了していなくても、新しい選択が行われるため、これは理にかなっています。とにかく、画面は更新されますが、ドロップダウンでのユーザーの最終選択のデータではありません (最初のヒット/変更で起動するようですが、ユーザーが入力を停止して最終選択が行われたときに再度起動することはありません)。 .

私はそれを onblur に切り替えましたが、ユーザーが選択を完了して移動するまで起動されません。

これは、MVC プロジェクトの aspx ページにあります。

<asp:DropDownList ID="employeeDropdown" runat="server" onchange="RefreshCalendarData()" /> 

これは、呼び出し元の js 関数です。

function RefreshCalendarData() {
    // code omitted
    Scheduler.Refresh();
}

js または jQuery を使用した適切な解決策/回避策はありますか?

4

2 に答える 2

1

ASP.NET MVCプロジェクトでサーバーコントロールを使用できます(例外はほとんどありません)。入力時にIE/ChromeでDDLが正しく機能する-ASP.NetMVCでのDropDownListのカスケードとDropDownListボックスおよびjQueryの操作に関するブログを参照してください。カスケードDDL サンプルを試してみてください。

于 2012-04-15T16:34:29.567 に答える
0

はい、onChangeイベントは正常に機能しています。onChangeを使用する代わりに、ウィンドウにタイマーをアタッチして、フィールドが変更されているかどうかを確認することができます。

したがって、ユーザーがフォームをぼかしたときにtrueに更新されるグローバル変数と、ユーザーが最後に選択したかどうかを確認するタイマーを作成できます。

if(userBlur == true && userSelect == true){
    //do the code
    window.clearInterval();
}else{
    //wait for change
}

あなたが期待しているものに近いはずです。

于 2012-04-15T16:16:53.150 に答える