タイプチェックボックスの入力がどのように機能するかについて少し混乱しています。
チェックボックスに1などの値を設定すると、チェックボックスがオンになっているかどうかに関係なく、フォームの送信時に取得される値は1であることがわかります。
<input type="checkbox" value="1">
したがって、チェックボックスがチェックされているかどうかを確認する正しい方法は、checkedfromjQueryを使用することです。またはそれを正しく行うにはどうすればよいですか?
タイプチェックボックスの入力がどのように機能するかについて少し混乱しています。
チェックボックスに1などの値を設定すると、チェックボックスがオンになっているかどうかに関係なく、フォームの送信時に取得される値は1であることがわかります。
<input type="checkbox" value="1">
したがって、チェックボックスがチェックされているかどうかを確認する正しい方法は、checkedfromjQueryを使用することです。またはそれを正しく行うにはどうすればよいですか?
チェックボックスの値は、チェックされていない場合は送信されません。
jQueryで確認したい場合は、常に次のものを使用します。
var isChecked = $('#checkbox').prop('checked');
または
var isChecked = $('#checkbox').is(':checked');
JavaScriptでは、属性とプロパティの違いを理解する必要があります。checkedプロパティと属性の両方です。ただし、チェックボックスのプロパティが変更されたときに、チェックされた属性が常に更新されるとは限りません(一部のブラウザでは更新されます)。属性は、DOMによって解析されたHTMLマークアップの値と考えてください。プロパティは、DOMのチェックボックス要素の実際のメンバーであり、UIでチェックボックスがオンになっているかどうかに応じて常に変化します。checked checked
JavaScriptを必要とせずに絶対確実な方法を試したい場合は、非表示の入力と同じ名前のチェックボックスをそれぞれ適切な「チェック済み」状態の値でレンダリングすることにより、「MVC」の方法で試すことができます。
<input type="hidden" name="mybox" value="false" />
<input type="checkbox" name="mybox" value="true" />
フォームを送信するときに、値が「true」の値がリクエストに見つからない場合mybox、チェックボックスはオンになりませんでした。詳しくはこちらをご覧ください。
チェックボックスが実際にチェックされているかどうかを確認するには、次を使用する必要があります
'boxname.checked==""
チェックボックスがオンになっていない場合でも、値は常に存在するためです。
$('input[type=checkbox]').is(':checked')
trueこれは、チェックされている場合とチェックされていない場合に返されますfalse。
質問に対するあなたのコメントに答えて、あなたがチェックされた状態を必要とするとき、値によって得られることはあまりありません。
checkはcheckboxタグのプロパティであるため、他の値が設定されていないかどうかを確認する必要があります。