我正在使用Jquery删除焦点上HTML输入中的默认值。
但是,如果输入中没有输入任何内容,我希望重新显示默认值。
为了尝试这样做,我创建了:
$( "#contact input" ).each(function( index ) {
$(this).focus(function() {
var valvalue = $(this).val();
$(this).val('');
});
$(this).focusout(function() {
var newvalvalue = $(this).val();
if(newvalvalue == ''){
$(this).val('', valvalue);
}
});
});
focus()
函数工作正常,但valvalue
函数无法获取变量focusout
。
有人知道将valvalue
变量传递给第二个focusout
函数的方法吗?
答案 0 :(得分:4)
您需要通过两个事件处理程序使varvalue
可见。可以通过在范围之外宣布它来完成。
$( "#contact input" ).each(function( index ) {
var valvalue; /* both event handlers can see it here */
$(this).focus(function() {
valvalue = $(this).val();
$(this).val('');
});
$(this).focusout(function() {
var newvalvalue = $(this).val();
if(newvalvalue == ''){
$(this).val('', valvalue);
}
});
});
答案 1 :(得分:1)
您在JS中遇到关闭范围问题。尝试在函数外部定义varvalue,以便两个函数引用相同的变量。
$( "#contact input" ).each(function( index ) {
var valvalue;
$(this).focus(function() {
valvalue = $(this).val();
$(this).val('');
});
$(this).focusout(function() {
var newvalvalue = $(this).val();
if(newvalvalue == ''){
$(this).val('', valvalue);
}
});
});
答案 2 :(得分:1)
除了其他答案之外,如果您不想支持旧浏览器,则可以使用HTML5中提供的placeholder
属性。
<input type="text" name="name" placeholder="Enter here">