Javascript 单击文本输入时,我如何执行操作?

Javascript 单击文本输入时,我如何执行操作?,javascript,jquery,text,input,focus,Javascript,Jquery,Text,Input,Focus,这里是jQuery的完全初学者,我假设答案很简单,所以我道歉 我有一个这样的登录表单: <table id="login_form"> <tr> <td class="login_label">Username: </td> <td><input type="text" class="login_input" /></td> </tr> <

这里是jQuery的完全初学者,我假设答案很简单,所以我道歉

我有一个这样的登录表单:

<table id="login_form">
    <tr>
        <td class="login_label">Username: </td>
        <td><input type="text" class="login_input" /></td>
    </tr>
    <tr>
        <td class="login_label">Password: </td>
        <td><input type="password" class="login_input" /></td>
    </tr>
</table>
为什么当我单击两个文本输入字段中的任何一个时,警报不会显示?如果我将“focus”更改为“ready”,那么我会收到警报,因此我假设这与此有关。

您需要输入,以便在元素添加到DOM且DOM就绪时执行绑定代码。ready在代码中工作,因为它等待在DOM中添加元素

$(document).read(function(){
   $(".login_input").focus(function(){
        alert("Why do I never get this alert?");
    });
});
传递给.ready()的处理程序保证在 DOM已经准备好了,所以这通常是连接所有其他对象的最佳位置 事件处理程序并运行其他jQuery代码。当使用依赖于 关于CSS样式属性的值,参考 外部样式表或嵌入样式元素,然后再引用 脚本

演示

API:

当 页面被呈现时,直到所有资源 如图像已完全接收。在大多数情况下 只要DOM层次结构完全完成,就可以运行脚本 构建。传递给.ready()的处理程序保证 在DOM准备好后执行,因此这通常是执行的最佳位置 附加所有其他事件处理程序并运行其他jQuery代码。使用时 脚本依赖于CSS样式属性的值,这一点很重要 在之前引用外部样式表或嵌入样式元素 引用脚本

代码

$(function () {
$(".login_input").focus(function(){
        alert("now you do?");
    }
);
});
将代码包装在
$(文档)中文档准备就绪后将运行代码:

$(document).read(function(){
   $(".login_input").focus(function(){
        alert("Why do I never get this alert?");
   });
});
演示:


警报未显示的原因是缺少包装器
$(document).ready(函数(){…})

添加会产生另一个问题的警报循环:

  • 您可以选择其中一个字段
  • 这个领域得到了关注
  • 焦点事件(如果激发)
  • 显示警报
  • 单击“确定”或“ESC”
  • 警报已关闭
  • field重新获得焦点
  • 焦点事件再次被触发
为什么会这样,请参见。您可以尝试使用
$(this.blur()

但问题几乎是一样的

在某些实际应用程序中,您很可能不会调用alert()。例如,将
alert()
更改为
console.log
可以解决以下问题:

$(document).ready(function() {
    $(".login_input").focus(function() {
        console.log("field in focus");
    });
});

为两个输入框指定一个单独的ID,然后将焦点列表添加到它们。我担心,通过这些修复程序,您将一个接一个地收到警报。但是,您可以为每个输入框显示不同的消息both@shadow:我不是指您的评论,而是指只使用$(document).ready()包装代码而不做其他更改的解决方案。我试过了,但当警报显示时,我必须按OK,在该字段恢复焦点后,警报再次显示。
$(document).ready(function() {
    $(".login_input").focus(function() {
        $(this).blur();
        alert("Here is my alert!");
    });
});
$(document).ready(function() {
    $(".login_input").focus(function() {
        console.log("field in focus");
    });
});