如果输入聚焦,我如何在以下HTML代码中提醒消息:
<div class="ss_datesel_inp_cont">
<div class="ss_datesel_inp_right_corner"> </div>
<input autocomplete="off">
</div>
这是我尝试但没有效果:
$(".ss_datesel_inp_cont:input").click(function() {
alert("focused");
});
// or
$(".ss_datesel_inp_cont:input").focus(function() {
alert("focused");
});
//or
$(".ss_datesel_inp_cont").find("input").focus(function() {
alert("focused");
});
答案 0 :(得分:2)
:input
选择器仅在给定元素是输入(也是textarea,select和其他)时才起作用。 .ss_datesel
等等类不在输入上,而是在div上。您只需使用后代选择器:
$(".ss_date_etc input").click(function() { alert('focused'); });
但是,这仅在单击输入时才有效。如果您通过Tab键或自动对焦,则不会发出警报。问题是,如果您使用.focus
,alert()
会窃取焦点,然后在某些浏览器中重新应用它,您将陷入焦点循环。这是一个简单的解决方案:
$(".ss_date_etc input").focus(function () {
if (!$(this).data('focused')) {
$(this).data('focused', true);
alert('focus!');
}
});
请注意,即使您尝试强制使用警报,并非所有浏览器都会在警报后恢复焦点。您可能希望使用alert
的替代方法,尤其是因为这对用户来说真的很烦人。
您还可以在模糊时将.data('focused')
更新为false
,以便再次发生这种情况。
答案 1 :(得分:1)
你的jQuery选择器出错了。这应该有效:
$(".ss_datesel_inp_cont input").focus(function() {
alert("focused");
});
此外,您的输入未正确设置...虽然“text”是默认输入类型,但您应始终在输入中指定类型:
<input type="text" autocomplete="off" />
有趣的是,你的第三次尝试似乎在我的测试中起作用。祝你好运。