亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

javascript 強制 ASP.NET 表單重新加載與 JQuery 自動完成文本框填充沖突?

javascript 強制 ASP.NET 表單重新加載與 JQuery 自動完成文本框填充沖突?

SMILET 2024-01-18 16:19:06
我定義了一個 ASP.NET 表單,其中包含以下表單元素: a TextBox、 anHiddenField和 a ,DropDownList定義如下:<asp:TextBox ID="_txtData" runat="server" ClientIDMode="Static" /><asp:HiddenField ID="_hdnData" runat="server" ClientIDMode="Static" Value="" /><asp:DropDownList ID="_ddlData" runat="server" DataSourceID="_sdsData" DataTextField="data" DataValueField="id" AppendDataBoundItems="true" AutoPostBack="true" >    <asp:ListItem Text="TUTTI" Value="" Selected="True" /></asp:DropDownList>_ddlData由以這種方式定義的數據源提供:<asp:SqlDataSource    ID="_sdsData"     runat="server"    ConnectionString="<%$ ConnectionStrings:db %>"    ProviderName="<%$ ConnectionStrings:db.ProviderName %>"    SelectCommand="        SELECT             id,             data        FROM             table_data        WHERE             (@id IS NULL) OR (id = @id)        ORDER BY targa">        <SelectParameters>            <asp:ControlParameter                 ControlID="_hdnData"                 PropertyName="Value"                 Direction="Input"                 ConvertEmptyStringToNull="true"                 DbType="Int32"                 DefaultValue=""                 Name="id" />        </SelectParameters></asp:SqlDataSource> _hdnData并_txtData通過 javascript/JQuery 以這種方式提供:[原代碼]var _hdnData = null;var _txtData = null;$(function () {    _hdnData = $("input[id$='_hdnData']");    _txtData = $("input[id$='_txtData']");    GetData(_txtData , _hdnData );});function GetData(source_widget, dest_widget) {    $.ajax({        type: "POST",        url: "/Service/WSDataService.asmx/GetData",        dataType: "json",        data: "{}",        contentType: "application/json; charset=utf-8",        success: function (data) {            var datafromServer = data.d.split("<br />");當 JQuery 的 select 事件autocomplete發生時,表單被提交,一旦重新加載,我注意到兩個主要問題:_txtData設置為發生選擇事件時用戶輸入的部分值(即不是菜單上選擇/可見的實際值autocomplete)_ddlData選擇事件之前存在的值將與來自其數據源的新數據合并。順便說一句,我目前不想SQLDataSource用更新的或更新的范例(如 Microsoft 實體框架)更改或數據綁定組件。
查看完整描述

1 回答

?
UYOU

TA貢獻1878條經驗 獲得超4個贊

你有一個時間問題。

您將提交該表單作為select活動的一部分。事件發生,所選值將由 jQuery UI 寫入表單字段select,但此代碼永遠不會運行。立即重新加載.closest("form").submit()頁面。此時,自動完成字段仍然只包含用戶輸入的內容。

對此的快速而骯臟的解決方案是在短暫延遲后發送表單,以便讓其他事件有機會完成。

// ...?

select: function (event, ui) {

? ? var _data = ui.item,

? ? ? ? _value,

? ? ? ? $form = $(this).closest("form");


? ? // calculate _value ...


? ? $("input[id$='_hdnData ']").val(_value);


? ? setTimeout(function () { $form.submit(); }, 50);

}


查看完整回答
反對 回復 2024-01-18
  • 1 回答
  • 0 關注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號