2011-02-25 34 views
0

这里是我的简单的功能隐藏在点击输入值,并再次显示它模糊:为什么我在jQuery中获得[object Object]?

// 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]上模糊,为什么呢?

回答

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); 
}); 

应该工作

0
  1. originalValue是它被宣布在该函数的范围内,并且在它之外不存在。您需要首先在函数之外声明它。

  2. 传入事件回调的值是事件对象。因此,在blur回调函数中,originalValue被设置为事件对象,这就是它为非null的原因。

你需要的是这样的:

var originalValue; 

$('.showHide').click(function() { 
    originalValue = $(this).val(); 
    $(this).attr("value", ''); 
}); 
$('.showHide').blur(function() { 
    $(this).attr("value", originalValue); 
}); 
2

当模糊调用你的处理函数被传递一个事件对象,而不是原始值。尝试存储这样的值:

// 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')); 
}); 
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); 
}); 
相关问题