为什么我不能附加到焦点事件但可以附加到文本框的模糊事件?

时间:2014-09-05 14:29:39

标签: jquery focus

简单代码:

jQuery(document).ready(function () {
    var txtAtm = jQuery("#txtAtm");
    txtAtm.on("focus", function () {
    alert("Focus!");
});

//txtAtm.blur(function () {
//    alert("Blur!");
//});

  txtAtm.on("blur", function () {
    alert("Blur!");
  });

});

模糊代码工作正常,焦点代码没有!!任何想法??

如果我将事件更改为焦点它可以工作但捕获Tab键也移动框的内容!!

表单是一个带有以下标记的webform,我想用jQuery替换内联标记(有效!!),我只是想确认我可以捕获事件!! (在第一道障碍失败了!!):

        <asp:TextBox ID="txtAtm" runat="server" CssClass="withUnit"
            AutoPostBack="true" CausesValidation="true" ValidationGroup="prv">not set</asp:TextBox>

呈现的HTML看起来像webform控件的标准autopost代码:

<input name="ctl00$leftContent$ctl07$txtAtm" type="text" value="not set"
  onchange="javascript:setTimeout('WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$leftContent$ctl07$txtAtm&quot;, &quot;&quot;, true, &quot;prv&quot;, &quot;&quot;, false, true))', 0)" 
  onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" 
  id="txtAtm" class="withUnit">

2 个答案:

答案 0 :(得分:1)

onkeypress你正在使用return false导致你的代码无效。

如果删除它,它会按照您的意愿开始工作。

答案 1 :(得分:0)

感谢超快的答案,看起来这是一个时间问题!!看起来“准备好”并不“准备好”!以下代码有效:

jQuery(document).ready(function () {
///<summary>
/// Replaces the inline markup
///</summary>

var txtAtm = jQuery("#txtAtm");

setTimeout(function () {
    txtAtm.on("focus", function () {
        txtAtm.select();
        //alert("Focus!");
    })
}, 1000);


txtAtm.on("blur", function () {
    //alert("Blur!");
    initBox(this.id, 'not set');
});

txtAtm.on("click", function () {
    txtAtm.select();
});

});

令人讨厌的是,脚本引用也在页面的末尾,所以你可以期待最小的计时问题!