我收到了一个错误,我假设它在我的语法中。
目标:如果用户实际上没有在text_area中写任何内容,请将其填入其标签中。
守则:
$(".card_signup_form input").live('click', function(){
$(this).css("color","#666666");
$old_value = $(this).attr("value");
$(this).attr("value", "")
if ( $(this).live('keyup blur') && $(this).attr("value") == "" ) {
$(this).attr("value", $old_value);
};
});
jQuery的常识错误:
F is undefined
答案 0 :(得分:4)
我认为你的问题在这里
if ( $(this).live('keyup blur') ... ) {
...
};
Live正在寻找一个你没有提供的功能,即AKA“F”。我建议将你的活动绑定分成单独的代码块。
正如其他人所指出的那样,对于没有鼠标导航的用户来说,只需对点击进行绑定就不会有效。
答案 1 :(得分:2)
这就是我通常处理这个问题的方法,你有很多live
个事件正在进行 - 不确定你是否经常向DOM添加新的文本字段。如果是这样,可能需要采取稍微不同的方法。
$('input').focus(function()
{
$(this).data('prev-val', $(this).val())
})
.blur(function()
{
if ($.trim($(this).val()).length == 0)
{
$(this).val( $(this).data('prev-val') );
}
});
答案 2 :(得分:2)
您可以通过指定模糊和焦点事件处理程序来执行相同的操作(焦点将处理单击)。您还可以指定“默认”属性并将该值与默认值进行比较。我还会指定一个“默认”的css类,而不是直接处理属性(只是我的pref)。
$(".card_signup_form input").live("focus", function()
{
var $this = $(this);
if($this.val() != $this.attr("default"))
{
$this.val("");
$this.removeClass("default");
}
}).live("blur", function()
{
var $this = $(this);
if($this.val() == "")
{
$this.val($this.attr("default"));
$this.addClass("default");
}
}
<style>
.default{
color:#666666;
}
</style>