誤用箭頭函式導致 jQuery中serializeArray()取不到值
阿新 • • 發佈:2021-01-29
技術標籤:javascriptjqueryes6
如下所示,表單加了name屬性,其他都沒加,表單是沒有問題的,查了網上的說要加readonly屬性,加了根本就無法輸入,不適用當前,多番試驗,發現不用箭頭函式就行了,難道是jq不支援es6???,但是如果註釋掉serializeArray()函式,下面的return false又確實能阻止表單的提交。
//為表單新增提交事件
$('#loginForm').on('submit',()=>{
//獲取表單中使用者輸入的資訊
//返回的是一個數組[{name:'email',value:'value'}]
var f = $(this).serializeArray()
console.log(f);
//阻止表單預設提交的行為
return false
})
改成function(){}形式,可以輸出
//為表單新增提交事件
$('#loginForm').on('submit',function(){
//獲取表單中使用者輸入的資訊
//返回的是一個數組[{name:'email',value:'value'}]
var f = $(this).serializeArray ()
console.log(f);
//阻止表單預設提交的行為
return false
})
補檔,檢視別人的部落格說是箭頭函式沒有自身的this,這樣就解釋得通了,$(this)無法取到想讓他取到的值,所以輸出了空陣列
https://segmentfault.com/a/1190000007074846
裡面講解了什麼時候不能用箭頭函式
新增連結描述
https://blog.csdn.net/qq_38774121/article/details/88038785