Dalam HTML, setiap <input />elemen dikaitkan dengan satu pasangan nama dan nilai (tetapi tidak unik). Pasangan ini dikirim dalam permintaan berikutnya (dalam hal ini, badan permintaan POST) hanya jika <input />"berhasil".
Jadi, jika Anda memiliki input ini di <form>DOM Anda :
<input type="text" name="one" value="foo" />
<input type="text" name="two" value="bar" disabled="disabled" />
<input type="text" name="three" value="first" />
<input type="text" name="three" value="second" />
<input type="checkbox" name="four" value="baz" />
<input type="checkbox" name="five" value="baz" checked="checked" />
<input type="checkbox" name="six" value="qux" checked="checked" disabled="disabled" />
<input type="checkbox" name="" value="seven" checked="checked" />
<input type="radio" name="eight" value="corge" />
<input type="radio" name="eight" value="grault" checked="checked" />
<input type="radio" name="eight" value="garply" />
Akan menghasilkan pasangan nama + nilai ini yang akan dikirimkan ke server:
one=foo
three=first
three=second
five=baz
eight=grault
Perhatikan itu:
twodan sixdikeluarkan karena mereka memiliki disabledset atribut.
three dikirim dua kali karena memiliki dua input yang valid dengan nama yang sama.
fourtidak dikirim karena itu adalah checkboxyang tidakchecked
sixtidak dikirim meskipun checkedkarena disabledatribut memiliki prioritas lebih tinggi.
seventidak memiliki name=""pengirimannya atribut, sehingga tidak disampaikan.
Sehubungan dengan pertanyaan Anda: Anda dapat melihat bahwa kotak centang yang tidak dicentang tidak akan mengirim pasangan nama + nilainya ke server - tetapi input lain yang memiliki nama yang sama akan dikirimkan bersamanya.
Kerangka kerja seperti ASP.NET MVC mengatasi ini dengan (diam-diam) memasangkan setiap checkboxinput dengan hiddeninput dalam HTML yang diberikan, seperti:
@Html.CheckBoxFor( m => m.SomeBooleanProperty )
Memberikan:
<input type="checkbox" name="SomeBooleanProperty" value="true" />
<input type="hidden" name="SomeBooleanProperty" value="false" />
Jika pengguna tidak mencentang kotak centang, maka yang berikut akan dikirim ke server:
SomeBooleanProperty=false
Jika pengguna mencentang kotak centang, maka keduanya akan dikirim:
SomeBooleanProperty=true
SomeBooleanProperty=false
Tetapi server akan mengabaikan =falseversi karena melihat =trueversi, dan jadi jika tidak melihat =trueitu dapat menentukan bahwa kotak centang diberikan dan bahwa pengguna tidak memeriksanya - sebagai lawan dari SomeBooleanPropertyinput yang tidak diberikan sama sekali.