我在表单输入上有一个keyup函数,每次按下一个键都会执行,我在firebug中收到一条警告:
The 'charCode' property of a keyup event should not be used. The value is meaningless.
我将其翻译为“标签已隐藏,因此您的keyup事件无效”
事情是......我只需要这个keyup函数运行一次。
相当简单的功能是带有字段提示的标签,即“输入您的电子邮件”,将鼠标悬停在文本输入上。打字时,标签会消失。
问题是我的代码每按一次键就会尝试继续隐藏此标签。
我使用的HTML代码是:
<label for='inp_email'>enter your email</label>
<input id="inp_email" name="inp[email]" class="inp" />
jquery是
$(document).ready(function(){
$('.inp').keyup(function(){
$(this).prev('label').fadeOut('fast');
});
});
所以我认为需要做一下检查:
$('.inp').keyup(function(){
$(this).prev('label:visible').fadeOut('fast');
});
(注意:选择器中的':visible'。)
这不起作用。
我也尝试过:
$('.inp').keyup(function(){
$(this).prev('label').is(':visible').fadeOut('fast');
});
但那个错误,所以我似乎不明白。它的功能还很好。
有什么想法吗?
答案 0 :(得分:1)
首先进行检查,如下所示:
if ($(this).prev('label').is(":visible"))
{
$(this).prev('label').fadeOut('fast');
}
如JQuery API中所述,“与其他过滤方法不同,.is()
不会创建新的jQuery对象。”所以你不能把它链起来。
这是一个有jsfiddle的工作版本。
答案 1 :(得分:1)
答案 2 :(得分:0)
请参阅:The 'charCode' property of a keyup event should not be used. The value is meaningless
基本上看起来你需要等到DOM准备就绪,
$(document).ready(function(){
// stuff here
});
答案 3 :(得分:0)
这样的事情:
<label for="EmailInput" class="show-me">Enter your email</label>
<input id="EmailInput" class="email-input" type="text" />
$(document).ready(function() {
$('input[type=text]').keyup(function() {
var idValue = $(this).attr('id');
var label = $('label[for="' + idValue + '"]');
if ($(label).hasClass('hidden'))
{
$(label).removeClass('hidden');
}
else
{
$(label).addClass('hidden');
}
});
});
可以看到它在这里工作:http://jsfiddle.net/timothyclifford/5Y9Ws/2/