触发ListBox SelectedIndexChanged没有AutoPostBack = true

时间:2017-07-07 08:28:00

标签: javascript c# jquery asp.net listbox

我尝试在asp中完成一个类似Combobox的外观(它是一个UserControl)。

有一个文本框,您在其中键入一个客户名称,下面显示一个名称相同的列表框。我在键码事件上使用javascript触发隐藏按钮。

我想通过向上/向下箭头浏览列表框并接受我在返回按钮上的选择,该部分有效。但是如果你用鼠标点击一个条目,我也想接受一个选择。

<script type="text/javascript">
function isKeyPressedA(event)
{
    event = event || window.event;
    if (event.keyCode != 40 && event.keyCode != 9 && event.keyCode != 13){
        document.getElementById('btnADrop').click();            
        bMouseClick = false;
        document.getElementById('Alistbox').AutoPostBack = false;
    }
    else if (event.keyCode == 13) {
        document.getElementById('btnEnter').click();
    }
    else if (event.keyCode == 40) {
        document.getElementById('btnASelect').click();
    }
} 

<asp:TextBox runat="server" ID="Atextbox" onKeyUp="isKeyPressedA(event)" Width="250px" autocomplete="off" ClientIDMode="Static" placeholder="Name oder Email" TabIndex="3" />
<asp:UpdatePanel runat="server" UpdateMode="Conditional" RenderMode="Inline" ChildrenAsTriggers="true" ID="divADrop" >
        <ContentTemplate>
            <asp:Label runat="server" ID="lblAError" Text="User nicht Vorhanden, bitte E-mail eintragen." style="color:red; display:none; " ></asp:Label>
            <asp:Panel runat="server" DefaultButton="btnEnter">  
                <asp:ListBox runat="server" ID="Alistbox" ClientIDMode="Static" Width="250px" Style="display: none;" OnSelectedIndexChanged="Alistbox_SelectedIndexChanged" ></asp:ListBox>   <%--onchange="javascript: return Changed( this );"--%>
                <asp:Button runat="server" ID="btnADrop" Text=""  ClientIDMode="Static" OnClick="btnADrop_Click" Style="display: none;"  />
                <asp:Button runat="server" ID="btnEnter" Text=""  ClientIDMode="Static" OnClick="btnEnter_Click" Style="display: none;"  />
            </asp:Panel>
            <asp:Button runat="server" ID="btnASelect" Text="" ClientIDMode="Static"  OnClick="btnASelect_Click" Style="display: none;" />
            <asp:Label runat="server" ID="lblAID"  ClientIDMode="Static" Style="display: none;" ></asp:Label>
            <asp:Label runat="server" ID="lblAName"  ClientIDMode="Static" Style="display: none;"></asp:Label>            
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btnADrop" />
            <asp:PostBackTrigger ControlID="btnEnter" />
        </Triggers>
</asp:UpdatePanel>

我知道我需要AutoPostBack = "true"在鼠标点击时触发OnSelectedIndexChanged事件,但我无法通过向上/向下箭头键进入列表,因为它会立即重新加载。

如果条目被接受,则会在文本框Atextbox中加载用户名,并在标题lblAName中加载,并将所选值加载到lblAIDbtnADrop实时加载列表框上的KeyPressed,btnEnter在返回时接受选定的值。 btnASelect只关注列表框并将所选索引设置为零。

是否可以同时完成(键盘和鼠标选择)?

0 个答案:

没有答案