2011-05-10 47 views
2

我有下面的代碼,當表單提交執行一定值的輸入字段:查找與使用JQuery

$('input[value=enter highlight]').val(''); 

從本質上講,它搜索通過表單包含的值的所有文本字段「中輸入亮點」並刪除該文本。問題是,當文本字段中的HTML代碼如下:

<input type="text" value="enter highlight"/> 

和用戶手動更改表單中這個值,JQuery的仍然承認爲是在HTML設置的原始值字段的值代碼(即'輸入突出顯示')並將字段值重置爲空白,即使用戶在字段中輸入了不同的值。非常意外的行爲。

任何想法我需要做什麼來確保JQuery將考慮用戶在清除值之前在文本框中輸入的任何更改的值?

非常感謝!

+0

你能展示你的整個提交代碼嗎? – corroded 2011-05-10 04:16:02

+0

使用jQuery 1.6? – 2011-05-10 04:21:58

回答

7

不知道這是否是問題,但你的jQuery選擇應該有報價在它

$('input[value="enter highlight"]').val(''); 

做不到這一點,試試這個:

$('input[value="enter highlight"]').each(function() { 
    if ($(this).val() == "enter highlight") $(this).val(''); 
}); 
+0

謝謝,但我嘗試過使用和不使用引號,而JQuery仍然無法識別用戶輸入的新值。 – 2011-05-10 04:24:40

2

我依稀記得讀的是選擇工作的關原始HTML源代碼中的值,所以不要選擇DOM加載後所做屬性值的更改。

將其更改爲一個明確的循環應該工作,雖然它不夠簡明:

$('input').each(function() { 
    if($(this).val()=="enter highlight") { 
    $(this).val(''); 
    } 
}); 
2

您所期望的行爲似乎只在jQuery的1.2.6或下方(小提琴測試)工作。

所有其他版本清除了原始值。這很可能是因爲[value=""]可能會檢查原始屬性值而不是當前值。

我已經在這裏安裝了一個小提琴,你可以看看:http://jsfiddle.net/jomanlk/4PBTZ/只需更改它的jQuery版本。

我建議你使用each()來電。

$('input:text').each(function(){ 
    if ($(this).val() == 'enter highlight') { 
     $(this).val(''); 
    } 
});