2011-02-25 35 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); 
}); 
相關問題