文本框焦点事件并在IE9中输入问题

时间:2012-07-27 06:50:35

标签: javascript jquery javascript-events internet-explorer-9 jquery-focusout

我有一个文本输入和一个输入类型提交的按钮。我已将focusout事件处理程序绑定到输入并单击事件处理程序到按钮。现在当我专注于输入然后按enter时,会触发focusout事件处理程序并触发按钮事件处理程序。我想只在文本框焦点丢失时触发焦点。我该怎么办?

代码: -

 <div >
     <span>Local Currency: </span>
     <input type='text' id='txtFocusElement'  />
     <button id="btnClickElement" >
         <span> Add new line</span>
     </button>
 </div>

我使用了选择器作为

 $("#txtFocusElement").bind("focusout", function() {
      console.log('focusout');
 })
 $("#btnClickElement").bind("click", function() {
      console.log('click');
 })

并将上面的代码写在我在加载文档时调用的一个函数中。

3 个答案:

答案 0 :(得分:1)

其IE9问题与HTML按钮标记。

所以我们应该使用HTML输入标签和属性类型作为按钮来尝试。

以上代码可以改写为:

<div >
     <span>Local Currency: </span>
     <input type='text' id='txtFocusElement'  />
     <input id="btnClickElement" type="button" value="Add new line" />
</div>

使用此问题我的问题就解决了。

答案 1 :(得分:0)

您可以尝试将选择器更改为输入[type = text]。 只有在关注文本字段时才会触发此操作。

答案 2 :(得分:0)

尝试附加到mouseup事件而不是click,这是我现在看到的唯一解决方案

您还可以添加对已按下的鼠标按钮的检查,因此如果用户按下右键则不会触发

var ClickElementEventHandler = function(e) {
    if (e.which != 1) return;
    //your code
};

$("#btnClickElement").bind("mouseup",ClickElementEventHandler)