Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Autocomplete与c#.net AJAX文本框textchanged事件一起使用?_C#_Jquery_Events_Autocomplete - Fatal编程技术网

如何将Autocomplete与c#.net AJAX文本框textchanged事件一起使用?

如何将Autocomplete与c#.net AJAX文本框textchanged事件一起使用?,c#,jquery,events,autocomplete,C#,Jquery,Events,Autocomplete,我在C#.Net Textbox textchanged事件、AJAX和自动完成()方面遇到了一个非常棘手的问题 我有一个带有自动完成功能的文本框“航班号”。一旦选择了一个建议,我希望使用AJAX并更新“出发机场”(DDL)和“目的地机场”(DDL) 问题:当我从自动完成中选择任何建议时,航班号没有使用所选建议值发回。例如,如果我键入“G91”,然后单击“G9101”,G9101将在航班号文本框中出现一秒钟,然后由于自动回邮而重置为“G91”。如何让它发回建议值 更新:我解决了问题,但在第一次发

我在C#.Net Textbox textchanged事件、AJAX和自动完成()方面遇到了一个非常棘手的问题

我有一个带有自动完成功能的文本框“航班号”。一旦选择了一个建议,我希望使用AJAX并更新“出发机场”(DDL)和“目的地机场”(DDL)

问题:当我从自动完成中选择任何建议时,航班号没有使用所选建议值发回。例如,如果我键入“G91”,然后单击“G9101”,G9101将在航班号文本框中出现一秒钟,然后由于自动回邮而重置为“G91”。如何让它发回建议值

更新:我解决了问题,但在第一次发帖后自动完成功能不起作用

//for flight number postback
protected void Page_Init(object sender, EventArgs e)
{
    var onBlurScript = Page.ClientScript.GetPostBackEventReference(tbFlightNumber, "OnBlur");
    tbFlightNumber.Attributes.Add("onblur", onBlurScript);
}

private void HandleCustomPostbackEvent(string ctrlName, string args)
{
    //Since this will get called for every postback, we only
    // want to handle a specific combination of control
    // and argument.
    if (ctrlName == tbFlightNumber.UniqueID && args == "OnBlur")
    {
        string flightNumber = tbFlightNumber.Text;
        ....
        //update 2 airports DDL
    }
}
航班号文本框

<div class="split half last">
                <label for="calculator-flight-number">
                    Flight Number</label>
                <asp:UpdatePanel ID="UpdatePanel7" runat="server">
                    <ContentTemplate>
                        <div id="autocomplete-wrap" class="autocomplete-wrap">
                            <asp:TextBox ID="tbFlightNumber" runat="server"  ClientIDMode="Static" CssClass="fill" ontextchanged="tbFlightNumber_TextChanged" AutoPostBack="true"></asp:TextBox>
                        </div>
                    </ContentTemplate>
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="bnCalculate" EventName="Click" />
                    </Triggers>
                </asp:UpdatePanel>
            </div>
这不起作用,因为我无法让AJAX为2个下拉列表注册触发器。此外,选择自动完成建议将触发“onblur”

第三次尝试: 我尝试在下一个字段中使用onfocus,但由于相同的原因,它不起作用


我有点困在这里了,有人能给我指点吗?TIA。

如果您使用的是更新面板,则会出现问题,并且在第一次服务器调用后它将无法工作。要解决此问题,需要添加PageRequestManager PageLoad事件以再次加载内容

在标记添加之前添加页面底部:

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(AddHandler);
function AddHandler(sender,args)
{
var options = {
        serviceUrl: '/Service/FlightSector',
        appendTo: 'div#autocomplete-wrap' 
    };
    console.log($('#tbFlightNumber'));
    var a = $('#tbFlightNumber').autocomplete(options);
}
希望这能奏效


我也遇到了同样的问题,这就是我解决问题的方法。

post html和javascript代码使用前端AJAX元素和javascript更新了代码。您的jquery自动完成功能不正常:jquery自动完成功能工作正常。只是我无法在点击建议后将其自动加载到机场。您选择的自动完成事件在哪里
//for flight number postback
protected void Page_Init(object sender, EventArgs e)
{
    var onBlurScript = Page.ClientScript.GetPostBackEventReference(tbFlightNumber, "OnBlur");
    tbFlightNumber.Attributes.Add("onblur", onBlurScript);
}

private void HandleCustomPostbackEvent(string ctrlName, string args)
{
    //Since this will get called for every postback, we only
    // want to handle a specific combination of control
    // and argument.
    if (ctrlName == tbFlightNumber.UniqueID && args == "OnBlur")
    {
        string flightNumber = tbFlightNumber.Text;
        ....
        //update 2 airports DDL
    }
}
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(AddHandler);
function AddHandler(sender,args)
{
var options = {
        serviceUrl: '/Service/FlightSector',
        appendTo: 'div#autocomplete-wrap' 
    };
    console.log($('#tbFlightNumber'));
    var a = $('#tbFlightNumber').autocomplete(options);
}