使用跨函数变量数据的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()
,只需触发附加的处理程序,无需将相同的代码放入两次。