这是我在点击时隐藏输入值并在模糊时再次显示的简单功能:
// show input value then hide on click
$('.showHide').click(function() {
var originalValue = $(this).val();
$(this).attr("value", '');
});
$('.showHide').blur(function(originalValue) {
$(this).attr("value", originalValue);
});
但是再次显示原始值并不起作用,相反,我得到了这个:[object Object]
模糊,为什么?
答案 0 :(得分:3)
这是一个范围问题
// show input value then hide on click
var originalValue;
$('.showHide').click(function() {
originalValue = $(this).val();
$(this).attr("value", '');
});
$('.showHide').blur(function() {
$(this).attr("value", originalValue);
});
应该有效
答案 1 :(得分:2)
当blur调用你的处理函数时,它传递一个事件对象,而不是原始值。尝试存储这样的值:
// show input value then hide on click
$('.showHide').click(function() {
jQuery.data($(this), 'originalValue', $(this).val();
$(this).attr("value", '');
});
$('.showHide').blur(function() {
$(this).attr("value", jQuery.data($(this), 'originalValue'));
});
答案 2 :(得分:1)
如果没有看到你的HTML,我不是肯定的,但我认为你的问题可能是第一个函数中的originalValue的本地声明,并尝试在第二个函数中使用它。试试这个:
// show input value then hide on click
var originalValue = "";
$('.showHide').click(function() {
originalValue = $(this).val();
$(this).attr("value", '');
});
$('.showHide').blur(function(originalValue) {
$(this).attr("value", originalValue);
});
答案 3 :(得分:0)
originalValue
属于它所声明的函数的范围,并且不存在于它之外。你需要先在函数之外声明它。
传递给事件回调的值是事件对象。因此,在blur
回调函数中,originalValue
设置为事件对象,这就是它为非null的原因。
你想要的是这样的:
var originalValue;
$('.showHide').click(function() {
originalValue = $(this).val();
$(this).attr("value", '');
});
$('.showHide').blur(function() {
$(this).attr("value", originalValue);
});