[CLOSED] Get Empty value for keyDown listener in IE9

  1. #1

    [CLOSED] Get Empty value for keyDown listener in IE9

    OS: Win7 64 Bit
    Visaul Studio 2008, Microsoft .net Framework 3.5 SP1
    Coolite 1.0
    Browser : IE9

    When we call the KeyDown listener for a text field, the value on the text fields is blank. We've also tried the .getValue() method. That didn't work either.
    This is only occurring in IE9. The value is there when we use IE8.

    .aspx Code
     <ext:Column ColumnID="EmployeeID" Header="Employee ID" Width="100" Sortable="true"
                                                DataIndex="MemberKey" Align="Right" Resizable="false" Hidden="false">
                                                <Renderer Fn="ssnMaskRenderer" />
                                                <Editor>
                                                    <ext:TextField ID="txtMemberKey" runat="server" ReadOnly="false" MaxLength="9" EnableKeyEvents="true">
                                                        <Listeners>
                                                            <KeyDown Fn="txtMemberKey_KeyDown" />
                                                        </Listeners>
                                                    </ext:TextField>
                                                </Editor>
                                            </ext:Column>
    Please look the attached

    memberKey is empty
    Attached Thumbnails Click image for larger version. 

Name:	keydown listener.png 
Views:	94 
Size:	27.9 KB 
ID:	2486  
    Last edited by Daniil; Mar 25, 2011 at 3:42 PM. Reason: Please use [CODE] tags, [CLOSED]
  2. #2
    Hi,

    Try to use KeyPress, i guess that IE9 updates DOM value of input element after keydown only
  3. #3
    Hi,

    Really, it has the different behaviors in IE9 and less.

    Here is a full sample to reproduce.

    Example
    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                Store store = this.GridPanel1.GetStore();
                store.DataSource = new object[] 
                { 
                    new object[] { "test1" },
                    new object[] { "test2" },
                    new object[] { "test3" }
                };
                store.DataBind();
            }
        }
    </script>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Ext.Net Example</title>
    
        <script type="text/javascript">
            var TextField1_KeyDown = function (field, event) {
                if (event.keyCode == 9 || event.keyCode == 13) {
                    alert(field.getValue());
                }
            }
        </script>
    </head>
    <body>
        <form runat="server">
        <ext:ResourceManager runat="server" />
        <ext:GridPanel ID="GridPanel1" runat="server" AutoHeight="true">
            <Store>
                <ext:Store runat="server">
                    <Reader>
                        <ext:ArrayReader>
                            <Fields>
                                <ext:RecordField Name="test" />
                            </Fields>
                        </ext:ArrayReader>
                    </Reader>
                </ext:Store>
            </Store>
            <ColumnModel runat="server">
                <Columns>
                    <ext:Column Header="Test" DataIndex="test">
                        <Editor>
                            <ext:TextField ID="TextField1" runat="server" EnableKeyEvents="true">
                                <Listeners>
                                    <KeyDown Fn="TextField1_KeyDown" />
                                </Listeners>
                            </ext:TextField>
                        </Editor>
                    </ext:Column>
                </Columns>
            </ColumnModel>
        </ext:GridPanel>
        </form>
    </body>
    </html>
    Anyway, I would suggest you to use SpecialKey listener instead of KeyDown to catch special keys like Enter. Tab. etc.

    If you'd replace
    <KeyDown Fn="TextField1_KeyDown" />
    with
    <SpecialKey Fn="TextField1_KeyDown" />
    it will work as you expects.
  4. #4
    Special Key works
    Thanks

    Quote Originally Posted by Daniil View Post
    Hi,

    Really, it has the different behaviors in IE9 and less.

    Here is a full sample to reproduce.

    Example
    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                Store store = this.GridPanel1.GetStore();
                store.DataSource = new object[] 
                { 
                    new object[] { "test1" },
                    new object[] { "test2" },
                    new object[] { "test3" }
                };
                store.DataBind();
            }
        }
    </script>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Ext.Net Example</title>
    
        <script type="text/javascript">
            var TextField1_KeyDown = function (field, event) {
                if (event.keyCode == 9 || event.keyCode == 13) {
                    alert(field.getValue());
                }
            }
        </script>
    </head>
    <body>
        <form runat="server">
        <ext:ResourceManager runat="server" />
        <ext:GridPanel ID="GridPanel1" runat="server" AutoHeight="true">
            <Store>
                <ext:Store runat="server">
                    <Reader>
                        <ext:ArrayReader>
                            <Fields>
                                <ext:RecordField Name="test" />
                            </Fields>
                        </ext:ArrayReader>
                    </Reader>
                </ext:Store>
            </Store>
            <ColumnModel runat="server">
                <Columns>
                    <ext:Column Header="Test" DataIndex="test">
                        <Editor>
                            <ext:TextField ID="TextField1" runat="server" EnableKeyEvents="true">
                                <Listeners>
                                    <KeyDown Fn="TextField1_KeyDown" />
                                </Listeners>
                            </ext:TextField>
                        </Editor>
                    </ext:Column>
                </Columns>
            </ColumnModel>
        </ext:GridPanel>
        </form>
    </body>
    </html>
    Anyway, I would suggest you to use SpecialKey listener instead of KeyDown to catch special keys like Enter. Tab. etc.

    If you'd replace
    <KeyDown Fn="TextField1_KeyDown" />
    with
    <SpecialKey Fn="TextField1_KeyDown" />
    it will work as you expects.

Similar Threads

  1. [CLOSED] KeyDown and KeyPress Event
    By rosua in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: May 04, 2012, 11:43 AM
  2. Replies: 10
    Last Post: Nov 12, 2010, 1:13 PM
  3. [CLOSED] KeyDown Event Not Firing
    By JonG in forum 1.x Legacy Premium Help
    Replies: 11
    Last Post: Jun 04, 2010, 1:57 PM
  4. [CLOSED] KeyDown Question
    By Timothy in forum 1.x Legacy Premium Help
    Replies: 2
    Last Post: Mar 05, 2009, 4:58 PM
  5. Store Listener - Only if Store not empty?
    By Tbaseflug in forum 1.x Help
    Replies: 4
    Last Post: Feb 24, 2009, 12:50 PM

Posting Permissions