0

IE でマウス クリックによるjQueryautocompleteの選択が選択されません。textbox(つまり、の中GridViewにあるEditItemTamplate)IEのドロップダウンリストから選択された値ではなく、テキストボックスに入力されたままポストバックします。Google と Firefox では正常に動作します。

このコードは私のコンテンツ ページにあります。に文字を入力するとtexboxautocompleteオプションのリストが表示されます。「上」または「下」矢印を使用してオプションを選択すると、textbox正しく入力されます。しかし、マウス クリックでオプションを選択すると、選択したオプションがtextbox入力されず、textbox.

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="BlindKeyVerification.aspx.cs" Inherits="Test.Administration.BlindKeyVerification" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <link href="../Styles/jquery-ui.css" rel="stylesheet" />
    <link href="../Styles/jquery-ui.min.css" rel="stylesheet" />
    <script src="../Scripts/jquery.js" type="text/javascript"></script>
    <script src="../Scripts/jquery-ui.js" type="text/javascript"></script>
    <script src="../Scripts/jquery-ui.min.js" type="text/javascript"></script>  
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript">       

    $(document).ready(function () {

        $("[id*=txtGridCode]").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: '<%=ResolveUrl("/Administration/priceCodeService.asmx/getPriceCodeArray") %>',
                    data: "{ 'priceCode': '" + request.term + "'}",
                    dataType: "json",
                    type: "POST",
                    contentType: "application/json; charset=utf-8",                        
                    success: function (data) {
                        response($.map(data.d, function (item) {
                            return {

                                label: item,                                    
                                val: item.split('-')[0]
                            }
                        }))
                    },
                    error: function (response) {
                        alert(response.responseText);
                    },
                    failure: function (response) {
                        alert(response.responseText);
                    }

                });
            },

            minLength: 1
        });

        $("[id*=txtGridCode]").autocomplete({
            select: function (event, ui) {
                $this = $(this);
                setTimeout(function () {
                    $("[id*=txtGridCode]").val(ui.item.val);                       
                }, 1);
            }
        });

    });

    function InitializeRequest(sender, args) {
        $("*").css("cursor", "wait");
    }

    function EndRequest(sender, args) {
        $("*").css('cursor', 'auto');
    }

    function stopRKey(evt) {
        var evt = (evt) ? evt : ((event) ? event : null);
        var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        //if ((evt.keyCode == 13) && (node.type == "text")) { return false; } //Stop return Key from Posting the page
        if ((evt.keyCode == 8) && (node.type == "select-one")) { return false; } //dropdown box backspace stop backpage
    }
    document.onkeypress = stopRKey; //Firefox
    document.onkeydown = stopRKey; //i.e.
</script>

textbox内部のいくつかの部分GridView:

BlinkKeyVerfication.aspx

<asp:GridView ID="GridView1" runat="server">
    <Columns>
        <asp:TemplateField HeaderText="Code">
            <ItemTemplate>
                <asp:Label ID="lblCode" runat="server" ForeColor="Red" Font-Size="Smaller">
                </asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="txtGridCode" runat="server" OnTextChanged="txtGridCode_TextChanged" AutoPostBack="true"></asp:TextBox>
            </EditItemTemplate>
            <ItemStyle Font-Size="Smaller" />
        </asp:TemplateField>
    </Columns>
</asp:GridView>

priceCodeService.asmx.cs

public partial class WebForm1 : System.Web.UI.Page
{

    public List<string> getPriceCodeArray(string priceCode)
    {
        List<string> doc = new List<string>();
        string CSConn = "Server=CourtData;Initial Catalog= CourtSupport; Integrated Security = SSPI";
        using (SqlConnection conn = new SqlConnection(CSConn))
        {
            using (SqlCommand comm = new SqlCommand("SELECT  priceCode, priceText FROM tblpriceCodeExtract WHERE priceCode like @priceCode + '%'", conn))
            {
                SqlParameter parameter_code = new SqlParameter();
                parameter_code.ParameterName = "@priceCode";
                parameter_code.Value = priceCode;
                comm.Parameters.Add(parameter_code);
                conn.Open();
                SqlDataReader rdr = comm.ExecuteReader();
                while (rdr.Read())
                {
                    //string doccode = rdr["priceCode"].ToString();
                    //string codetext = rdr["priceText"].ToString();
                    //if (codetext.Length > 30)
                    //    codetext = codetext.Substring(0, 29) + "...";
                    //doc.Add(string.Format("{0}-{1}", doccode, codetext));
                    doc.Add(rdr["priceCode"].ToString());

                }
            }
        }
        return doc;
    }
}
4

1 に答える 1

0

互換表示のため、コードが正しく動作しませんでした。当サイトは互換表示になっています。

私のaspxコンテンツページのヘッドセクションには、次のコードがありましたが、マスターページコードがブロックしていたため、使用できませんでした

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

次に、コンテンツ ページからそのコードを削除し、.cs ファイルに次のコードを追加しました。

 protected void Page_Load(object sender, EventArgs e)
        {
            if (Header.Controls[1].GetType() != typeof(System.Web.UI.HtmlControls.HtmlMeta))
            {
                System.Web.UI.HtmlControls.HtmlMeta meta = new System.Web.UI.HtmlControls.HtmlMeta();
                meta.HttpEquiv = "X-UA-Compatible";
                meta.Content = "IE=edge";
                this.Header.Controls.AddAt(1, meta);
            }

これで、私のコードはすべてのブラウザーで正常に動作します。これで、コードに選択イベントはもう必要ありません。だから私はそれを削除しました。

于 2015-09-30T12:19:42.967 に答える