2013-07-10 32 views
3

我已經花了幾個小時的時間了,找不到任何幫助,所以拋出毛巾。我只是簡單地嘗試恢復輸入框的前一個值,如果用戶清除它並在輸入失去焦點時不留下任何東西。因此,例如,如果它在我的輸入框中顯示「澳大利亞布里斯班」,並且用戶從輸入中刪除了該文本,然後按下標籤,我希望它將輸入恢復爲「澳大利亞布里斯班」。這裏是我的代碼:jQuery - 將輸入值設置爲之前的模糊值(如果爲空)

$('input#search-location').on("focus", function() { 
    $(this).data("previous-value", $(this).val()); 
}); 

$('input#search-location').on("blur", function() { 
    if ($(this).val() == "") { 
    // alert($(this).data("previous-value")); 
    $(this).val($(this).data("previous-value")); 
    } 
}); 

兩個事件觸發的,如果我在模糊功能取消註釋的提醒,它正確地顯示以前的值。但是我的輸入框中沒有任何內容出現,並且控制檯中沒有錯誤。我想這是我很想念的東西......我感謝任何幫助!

+1

在這裏工作:http://jsfiddle.net/8JxVF/ –

+0

確實是它的工作... –

+1

對我也適用這裏http://jsfiddle.net/mplungjan/7r9Lg/;) – mplungjan

回答

4

你的代碼應工作在這裏做Live Demo

注意你需要執行你的代碼後,頁面元素呈現,所以你需要用的代碼

$(function() { ... }); 

的選擇,如果你想其設置爲它必須加載頁面時的默認值,嘗試

Live Demo

$('input#search-location').on("blur", function() { 
    if ($(this).val() == "") { 
    $(this).val(this.defaultValue); 
    } 
}); 

新版瀏覽器將在這裏給出一個提示:

<input placeholder="Type your name" /> 

,你可以幫助老的瀏覽器支持它

$(function() { 
    if (!placeholderIsSupported) { 
    $('#search-location1') 
    .val($('#search-location1').attr("placeholder")) 
    .on("blur", function() { 
     if ($(this).val() == "") { 
     $(this).val($(this).attr("placeholder")); 
     } 
    }) 
    .on("focus",function() { 
     if ($(this).val()==$(this).attr("placeholder")) $(this).val(""); 
    }); 
    } 
}); 

function placeholderIsSupported() { 
var test = document.createElement('input'); 
return ('placeholder' in test); 
} 
+0

是的,它是在小提琴工作(應該做一個之前,我張貼)。我準備好了文檔中的代碼,並且我知道這些事件會被解僱,因爲我在取消註釋時會收到警報。我希望恢復以前的值而不是加載頁面時的值,但是感謝那些代碼,這很方便了解'this.defaultValue'。 – mchapman17

+0

我已經有一個佔位符在輸入和工作,我試圖刪除它,它並沒有幫助我的問題,雖然。我正在使用Rails,只是更新到最新的jQuery gem,這意味着它使用的是版本1.10.1,仍然存在相同的問題。奇怪的! – mchapman17

+0

把你的表格粘貼到一個新的頁面,把你的代碼和添加它。它會工作。現在一點一點地添加,直到它失敗。你應該找到你的問題。例如,一個表單「美化」 – mplungjan