Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用跨函数变量数据的jquery_Jquery - Fatal编程技术网

使用跨函数变量数据的jquery

使用跨函数变量数据的jquery,jquery,Jquery,大家好。基本上,我有一个充满文本输入字段的页面,其中包含默认值 当用户聚焦于输入时,我希望该值设置为零,但是如果用户聚焦(在模糊上),并且输入仍然为空,我希望将其值更改回原来的值 目前我有这个,但它不起作用: $("#login input").focus(function(){ $(this).val(""); $(this).data({   value: $(this).val()  }); }); $("#login input").focuso

大家好。基本上,我有一个充满文本输入字段的页面,其中包含默认值

当用户聚焦于输入时,我希望该值设置为零,但是如果用户聚焦(在模糊上),并且输入仍然为空,我希望将其值更改回原来的值

目前我有这个,但它不起作用:

$("#login input").focus(function(){
    $(this).val("");
      $(this).data({
       value: $(this).val()
      });
}); 
$("#login input").focusout(function(){
  if($(this).val()=="") {
   $(this).val($(this).data("value"));
  }
});
我需要的是某种不改变的东西?也许吧

提前感谢

重新写一点(颠倒焦点的顺序!),如下所示:

$("#login input").focus(function(){
    $.data(this, "value", $(this).val());
    $(this).val("");
}); 
$("#login input").focusout(function(){
  if($(this).val()=="") {
   $(this).val($.data(this, "value"));
  }
});
快捷方式更整洁,浪费更少(没有额外的jQuery对象)…但主要问题是您需要交换
焦点中的顺序,您在存储之前清除了该值,因此每次都将其存储为
“”

重新写入一点(在焦点中颠倒顺序!),如下:

$("#login input").focus(function(){
    $.data(this, "value", $(this).val());
    $(this).val("");
}); 
$("#login input").focusout(function(){
  if($(this).val()=="") {
   $(this).val($.data(this, "value"));
  }
});

快捷方式更整洁,浪费更少(没有额外的jQuery对象)…但主要问题是您需要交换
焦点中的顺序,您在存储之前清除了该值,因此它被存储为
“”
每次。

它不起作用,因为首先设置一个空值,然后存储该空值。试试这个:

$("#login input").focus(function(){
  $(this).data({
    value: $(this).val()
  });
  $(this).val("");
}); 
$("#login input").focusout(function(){
  if($(this).val()=="") {
   $(this).val($(this).data("value"));
  }
});

它不起作用,因为首先设置一个空值,然后存储该空值。试试这个:

$("#login input").focus(function(){
  $(this).data({
    value: $(this).val()
  });
  $(this).val("");
}); 
$("#login input").focusout(function(){
  if($(this).val()=="") {
   $(this).val($(this).data("value"));
  }
});

$(“#登录输入).focus(函数(){
var$this=$(this);
if($this.val()==$this.attr('data-default'))$this.val(“”);
}).blur(函数(){
var$this=$(this);
if($this.val()==“”)$this.val($this.attr('data-default'));
}).blur();
通过这种方式,您可以在字段中输入另一个非默认值,而无需将其删除。例如,用户输入错误的密码,您可以使用用户在第一次尝试时提供的密码预先填充用户名。如果您按照自己的方式操作。如果我关注此字段,此值将被删除。


$(“#登录输入).focus(函数(){
var$this=$(this);
if($this.val()==$this.attr('data-default'))$this.val(“”);
}).blur(函数(){
var$this=$(this);
if($this.val()==“”)$this.val($this.attr('data-default'));
}).blur();

通过这种方式,您可以在字段中输入另一个非默认值,而无需删除它们。i、 e.用户输入错误的密码。您可以使用用户在第一次尝试时提供的密码预先填充用户名。如果你按自己的方式做。如果我专注于此字段,此值将被删除。

+1您能否更清楚地说明问题是在第一个处理程序中的语句顺序中?太棒了!我自己真的应该看到这一点:D感谢您提供有关$.data的信息。IMHO
$(this.data)(“value”,$(this.val())的可读性稍好一些。@Jens-readable并不总是更好……您只是浪费了创建一个额外的jQuery对象:)您是对的,但您可以这样做:
var$this=$(this)$this.data(“value”,$this.val())$此.val(“”)+1您能否更清楚一点,问题在于第一个处理程序中语句的顺序?太棒了!我自己真的应该看到这一点:D感谢您提供有关$.data的信息。IMHO
$(this.data)(“value”,$(this.val())的可读性稍好一些。@Jens-readable并不总是更好……您只是浪费了创建一个额外的jQuery对象:)您是对的,但您可以这样做:
var$this=$(this)$this.data(“value”,$this.val())$此.val(“”)
而不是
。each()
使用重复的代码可以替换整个
。each(…)
使用
。blur()
,只需触发附加的处理程序,无需将相同的代码放入两次。代替
。each()
使用重复的代码可以替换整个
。each(…)
使用
。blur()
,只需触发附加的处理程序,无需将相同的代码放入两次。