コンボボックスの値が変更されたときにサーバーにポストバックしたいと思います (理想的には更新パネルで AJAX 呼び出しを使用しますが、一度に 1 つずつ)。jQuery UI
AutoComplete Combobox
残念ながら、ドロップダウンリストを直接変更していないため、変更イベントに干渉しています。
ここで説明されている実装を使用しています。
ここにいくつかの選択のスニペットがあります
HTML 本文コード
<span class="ui-widget">
<asp:DropDownList ID="cboLang" runat="server" AutoPostBack="True">
<asp:ListItem Value="ActionScript">ActionScript</asp:ListItem>
<asp:ListItem Value="AppleScript">AppleScript</asp:ListItem>
<asp:ListItem Value="Asp">Asp</asp:ListItem>
</asp:DropDownList>
</span>
オートコンプリート Javascript
これは、選択が行われるたびに実行されるオートコンプリート js です。常に関数を実行します_removeIfInvalid
this._on(this.input, {
autocompleteselect: function (event, ui) {
ui.item.option.selected = true;
this._trigger("select", event, {
item: ui.item.option
});
},
autocompletechange: "_removeIfInvalid"
});
サーバー側コード
Protected Sub cboLang_SelectedIndexChanged(sender As Object, e As EventArgs) _
Handles cboLang.SelectedIndexChanged
'DO OTHER STUFF HERE
Dim alert = String.Format("alert('{0}');", "Hi")
ScriptManager.RegisterStartupScript(Me, Me.GetType, "DropDownChange", alert, True)
End Sub
生成コード
ASP.NET がイベントが添付されたページをレンダリングすると、次のコードが生成されます。
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['ctl00'];
if (!theForm) {
theForm = document.ctl00;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<select id="cboLang" onchange="javascript:setTimeout('__doPostBack(\'cboLang\',\'\')', 0)"
name="cboLang" style="display: none;">
質問
オートコンプリート入力を更新するたびにサーバー イベントをトリガーできるようにするには、どこで変更を加えることができますか?