2011-12-19 61 views
2

我的jQuery添加一個「清除」按鈕,搜索表單的末尾以下位: -IE忽略的jQuery .VAL()

$('#search-tools input:last').after($('<input>',{ 
    'class': 'search-clear' 
    , 'val': 'Clear' 
    , 'type': 'submit' 
    , 'click': function() { 
    // do something 
    } 
})); 

這非常適用於IE以外所有瀏覽器;在IE中,輸入按鈕沒有得到「清除」值,而是顯示「提交查詢」。我是否設置val不正確或這是一個已知的與jQuery的IE問題?

+4

也許嘗試'value'? – MacMac 2011-12-19 16:05:09

+1

'val'不是一個屬性,它是一個設置輸入元素值的jQuery方法。實際的屬性被稱爲「值」。 – 2011-12-19 16:08:10

+0

我不敢相信我不知道你可以用這種方法爲新創建的DOM元素添加屬性。 – Blazemonger 2011-12-19 16:11:56

回答

4

我已經想通了......
你必須後定義'value'財產'type'屬性:

$('<input>', { 
    'class': 'search-clear', 
    'type': 'submit', 
    'value': 'Clear', 
    'click': function() { 
     // do something 
    } 
}) 

直播演示:http://jsfiddle.net/b8mk6/10/


IE 清除'value'屬性的當'type'屬性設置爲'submit'的值。所以:

var input = document.createElement('input'); 

input.value = 'test...'; 
input.type = 'submit'; // the value is cleared 

document.body.appendChild(input); 

現場演示:http://jsfiddle.net/Z3xQ5/1/

+0

謝謝。這很好。這似乎有點奇怪,屬性的順序在IE中很重要! – drmonkeyninja 2011-12-19 16:29:17

+1

+1。我意識到這是有效的,但你仍然需要小心設置'type'屬性,因爲jQuery文檔指出它在IE中不受支持:http://api.jquery.com/jQuery/#jQuery2 – Peter 2011-12-19 16:30:56

+0

@彼得很高興知道。 – 2011-12-19 16:35:44

1
$('<input>', { 
    'class':'search-clear', 
    'type': 'submit', 
    'click': function() {} 
}).appendTo('body'); 
$('.search-clear').attr('Value','Clear'); 

這個工程因爲某些原因

+0

但這並不意味着jQuery也不能接受''val''作爲簡寫。它顯然是這樣做的,因爲「value」和「val」都可以工作(除IE之外,其中任何一個都不起作用)。 – 2011-12-19 16:16:06

+0

檢查我的代碼,在JSFiddle中工作,雖然我不明白爲什麼,可能是IE的很好的老bug之一。 – 2011-12-19 16:21:07

0

我認爲這是因爲輸入元素的type的。嘗試將其設置爲button而不是submit,如果您不希望它的行爲類似於提交按鈕,則效果非常好。嘗試這個。

$('<input />', { 
    'class': 'search-clear', 
    'value': 'Clear', 
    'type': 'button', 
    'click': function() {} 
}).appendTo('body'); 

http://jsfiddle.net/b8mk6/11/