自动完成和用户定义键盘

时间:2010-04-08 10:10:48

标签: javascript jquery autocomplete

我正在使用asp:按钮使用Java脚本创建一个带有A-Z的键盘和用于触摸屏的0-9。此键盘与一个文本框链接。如果我们单击一个按钮,相应的文本将显示在文本框中。它的工作正常。我已使用jquery JQuery Autocomplete将自动填充功能包含在此文本框中。

问题:

  1. 如果我的用户定义了键盘,则自动完成功能无效。 如何将我的按键修改为键盘按键[设置事件键码]?可能吗?有没有其他方法可以实现这一目标?
  2. 代码:

     <asp:TextBox ID="txtSearch" runat="server"></asp:TextBox>
    
     <asp:Button ID="zero" runat="server" Text="0" CssClass="myclass" OnClientClick="return typeLetter(this);" TabIndex="20"/>
    
     function typeLetter(currentbutton) {
             if (previousActiveElement != null) {
                 if (previousActiveElement == 'antSearchText'){
    
                     var position = document.getElementById('position').value;
    
                     if (position == '') {
                         alert('chk position');
                     } else {
                         var existingString = document.getElementById(previousActiveElement).value;
                         var beforeString = existingString.substring(0, position);
                         var afterString = existingString.substring(position, existingString.length);
                         document.getElementById(previousActiveElement).value = beforeString + currentbutton.value + afterString;
                                                                         setCaretPosition(document.getElementById(previousActiveElement), parseInt(position) + 1);
                         setCaretPosition(document.getElementById(previousActiveElement), parseInt(position) + 1);                         
                     }                     
                 }                 
             }             
             return false;
         }
    

    编辑:

    在自动完成插件中,以下是获取关键事件,如何使用我的密钥传递相同的键事件?

      $input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) {
    }
    

2 个答案:

答案 0 :(得分:0)

尝试手动触发jQuery keydown / keyup事件。我不记得我的生活中有哪一个自动完成触发,但这里是要点:

// your documment.getElementById(...)
jQuery('#'+previousActiveElement).keyup();
// your setCaretPosition

尝试不同的关键事件,并且应该启动自动完成功能。

希望有所帮助!

谢谢, 乔

答案 1 :(得分:0)

使用以下代码解决问题。

代码:

var q = document.getElementById('txtbox');
var evObj = document.createEventObject();
evObj.keyCode = 84; // [T] key
q.fireEvent('onkeydown', evObj);

格塔。