Я не совсем понимаю, почему вы хотите это сделать (значение флажка не будет отправлено в любом случае, если оно не отмечено).
checked
свойство элемента DOM всегда сообщит вам, проверено оно или нет.Таким образом, вы можете получить this.checked
(Javascript DOM) или $(this).prop('checked')
(jQuery wrapper).
Если вам действительно это нужно, вам следует сделать следующее:
onclick="$(this).attr('value', this.checked ? 1 : 0)"
или даже
onclick="$(this).val(this.checked ? 1 : 0)"
или даже лучше, не использует встроенные обработчики событий (например, onclick
), но использует оболочки обработки событий jQuery (* 1024)* или .click()
в старых версиях).
jsFiddle Демонстрация с обработкой событий jQuery
Проблема с вашимподход
Вы используете $(this).checked
, чтобы получить состояние вашего флажка.Объект jQuery (тот, который возвращается функцией $
) не имеет свойства checked
, поэтому он будет undefined
.В Javascript undefined
- это значение falsy , поэтому значение вашего флажка всегда равно 0
.