2014-02-19 28 views
3

在通過一些第三方代碼時,我意識到他們正在使用.val()爲表單分配一個值,然後提交表單。使用.val()分配值以形成使用.val()

$('#form-ID').val("Some Value"); 

這是一個有效的jQuery語句,如果你做

$('#form-ID').val() 

你在控制檯上"Some Value"但沒有觀察到HTML的改變,以反映「一些價值」。因此,如果沒有HTML更改,那麼:

  1. 爲什麼要爲表單賦值?

  2. 如果需要PHP代碼如何讀取此值?

回答

7

代碼工作,因爲即使HTMLFormElement實例不限定爲具有value財產,val不檢查,只是高興地分配給它,創建一個的expando。這適用於任何元素:

var d = $("<div>"); 
d.val("foo"); 
console.log(d.val()); // "foo" 
console.log(d[0].value); // "foo" 

表單提交了value的expando將不包括與提交該值(你可以try it here),所以我預計,如果代碼是這樣做的,它做它純粹是爲了客戶端的原因。或者,當然,這是一個他們從未發現並修復的錯誤。 (或者他們可能會使用猴子補丁val並使它做一些特別的事情。)

+0

非常感謝! :) –