使用直播活动“F未定义”

时间:2011-05-06 20:14:18

标签: jquery events

我收到了一个错误,我假设它在我的语法中。

目标:如果用户实际上没有在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

3 个答案:

答案 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>