Как сказал Саймон, .val () возвращает атрибут значения флажка, который может быть любым желаемым значением. Но, более конкретно, он возвращает значение свойство объекта DOM, которое инициализируется атрибутом. MVC, по-видимому, устанавливает значение «true» по умолчанию, что мне кажется довольно бессмысленным. Но в некоторых случаях вы можете захотеть установить для него идентификатор или какое-либо другое значимое значение для отмеченной опции, как указывает этот поток .
Николас предоставил один хороший способ узнать, установлен ли флажок выше. Установите и снимите флажок на этом jsfiddle для примера различных подходов и их результатов:
Флажок JQuery установлен
Сводка скрипки:
$("#use").val(); //Returns the value. Not related to checked state.
$("#use").attr("checked") //Returns the checked attribute value. Does not change with checked state.
$("#use").prop("checked") //Returns boolean checked state.
$("#use")[0].checked) //Returns boolean checked state.
$("#use").is(":checked") //Returns boolean checked state.
Обратите внимание, что результаты .val и .attr не меняются. Это связано с тем, что свойство val не зависит от проверенного состояния, а фактический проверенный атрибут в разметке не обновляется при изменении флажка. Только свойство объекта DOM за кадром, к которому обращаются последние три метода.
См. Документацию jQuery API на .prop для получения дополнительной информации об этом.