javascript - .blur() 和 .keypress() 在 jQuery 中不起作用

标签 javascript jquery keypress blur keydown

我试图在文本字段聚焦、模糊以及按下按键时调用一些函数;但是,只有对焦功能有效。这是我所拥有的:

HTML:

<form id="loginForm" method="post" action="login.php" style="float: right; width: 90%; margin: 0 -1px 5px 0;">
    <input type="text" id="loginPass" value="password" /><input type="text" id="loginName" value="email" />
    <input type="submit" id="loginSubmit" value="Log In" />
</form>

JS:

$('#loginPass').keypress(function() {
    alert('hey');
});
$('#loginPass').blur(function() {
    var lp = $('#loginPass');
    alert('val:'+lp.val());
});
$('#loginPass').focus(function() {
    var lp = $('#loginPass');
    if ( lp.val() == 'password' ) {
        $('#loginForm').html('\n        <input type="password" id="loginPass" value="" />' +
            '<input type="text" id="loginName" value="email" />' +
            '<input type="submit" id="loginSubmit" value="Log In" />');
        //setTimeout(function() { lp.focus(); }, 10);
        setCaretPos(document.getElementById("loginPass"), 0);
    }
});

就像我说的,焦点一个按预期工作,但我什至无法从其他焦点中得到警报。知道问题出在哪里吗?

最佳答案

您需要事件委托(delegate):

$('#loginForm').on('keypress', '#loginPass', function() {
   alert('hey');
});
$('#loginForm').on('blur', '#loginPass', function() {
  var lp = $('#loginPass');
  alert('val:'+lp.val());
});

即使焦点也应该必须获得委托(delegate):

$('#loginForm').on('focus', '#loginPass', function() {
var lp = $('#loginPass');
if ( lp.val() == 'password' ) {
    $('#loginForm').html('\n        <input type="password" id="loginPass" value="" />' +
        '<input type="text" id="loginName" value="email" />' +
        '<input type="submit" id="loginSubmit" value="Log In" />');
    //setTimeout(function() { lp.focus(); }, 10);
    setCaretPos(document.getElementById("loginPass"), 0);
}
});

因为每次您聚焦输入时,它都会用新的 html 标记替换当前的 html 标记。

关于javascript - .blur() 和 .keypress() 在 jQuery 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14996488/

相关文章:

javascript - 是否有一个 React 生命周期方法仅在组件第一次接收到 props 时才执行某些操作?

javascript - 使用 knockoutjs 延迟加载图像

javascript - 在悬停时为字体大小设置动画时出现闪烁问题

javascript - Onsubmit 函数在 Safari 上触发,即使所需的输入为空

javascript - 如何限制一个div可以包含的元素? HTML

javascript - Jquery 将键绑定(bind)到除类之外的正文

javascript - 存储在嵌套 map /对象中使用的实例

javascript - 使用 jQuery 在按钮单击上添加数字?

c++ - gtkmm:如何检测箭头键是否被按下

c++ - 如何获得在 SFML 中按下按键后耗时?