我試圖找出更換在jQuery的/ JavaScript的刪除方法,因爲我不能夠使用刪除方法在IE11。 IE發出錯誤對象不支持此屬性或方法'刪除'。置換刪除方法在JavaScript
我試圖將以下代碼:
formData.delete($(this).closest('.text-center').find('.imageUrl').attr("name"));
我想,以取代由IE支持的任何其他方法刪除方法。
我試圖找出更換在jQuery的/ JavaScript的刪除方法,因爲我不能夠使用刪除方法在IE11。 IE發出錯誤對象不支持此屬性或方法'刪除'。置換刪除方法在JavaScript
我試圖將以下代碼:
formData.delete($(this).closest('.text-center').find('.imageUrl').attr("name"));
我想,以取代由IE支持的任何其他方法刪除方法。
如果formData
是一個JavaScript對象,那麼你應該能夠使用以下命令:
var name = $(this).closest('.text-center').find('.imageUrl').attr("name");
delete formData[name];
According to MDN,還有近在Internet Explorer中FormData
不支持(近仍然樂觀:它僅支持append
)。使用delete ...
FUBAR擬議答案不會在這裏工作,因爲:
a = new FormData()
a.set('foo', 'bar')
a.get('foo') // "bar"
a['foo'] // undefined
delete a['foo'] // true
a.get('foo') // still "bar"
所以,過了一小集思廣益我的第一個想法是:創建FORMDATA對象的副本,而不應該將其刪除的關鍵(的foreach鍵值對)。但是:這不起作用,因爲IE不支持entries以及其他可能性(Object.keys
和朋友)在我的測試中不起作用。
我會建議,或者:使用Polyfill,像這樣:FormData polyfill。
或(根據您的示例,我更喜歡):畢竟您可以考慮不使用FormData。由於構造函數FormData(form)
只是使用從表單中取出的鍵值對填充對象(作爲鍵的name
屬性),因此可以使用像這樣的普通的舊JavaScript對象來實現此行爲,然後可以使用從對象中已知的任何東西(Object.keys
,delete
等)。
function formData(form) {
var result = {};
$(form).children('input').each(function (i, elem) {
result[elem.name] = elem.value;
});
return result;
}
var data = formData($('#my-form'));
console.log(JSON.stringify(data));
delete data['pet'];
console.log(JSON.stringify(data));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="my-form">
<input type="text"
value="Jon"
name="name" />
<input type="text"
value="kitty"
name="pet" />
</form>
我看到IE不支持FORMDATA不是附加其他的任何其他方法,所以刪除方法是行不通的。因此,我刪除了刪除方法並僅通過使用append來解決問題。
謝謝你所有的迴應。
'formData'變量來自哪裏?類似於'formData = document.query('form')'或'formData = $('form')'? –
這裏是什麼'formData'? –
看起來像只有方法IE'FormData'具有'append' - 你可能必須創建一個新的'FormData'只複製你需要的條目 - 並且無法看到已經添加了什麼,祝你好運 –