У меня есть следующий код для включения кнопки отправки после нажатия на этот флажок.
HTML:
<input type="checkbox" checked="checked" id="check"><a href="#">terms and conditions</a>
<input type="submit" name="submit" id="post" value="submit">
Автор сценария:
$('#check').click(function(){
if($(this).attr('checked') == false){
$('#post').attr("disabled","disabled");
}
else {
$('#post').removeAttr('disabled');
}
});
Но это не работает в моем локальном хосте. Кнопка включена все время, даже если флажок не выбран. Пожалуйста, помогите мне заставить его работать.
$('#check').click(function() {
$('#post').prop('disabled', !$(this).is(':checked'));
}
.attr()
проверяет атрибут в HTML, а не текущее состояние HTML; .is(':checked')
проверяет последний. Кроме того, я считаю предпочтительным использовать .prop()
для динамического изменения состояния элемента.
Много ответов.
Не вызывайте какой-либо элемент управления формой "submit", поскольку он будет form.submit
метод отправки формы (т.е. form.submit
будет ссылаться на элемент управления, а не на метод).
Все, что вам нужно, это что-то вроде:
<form ...>
<input type="checkbox" onclick="this.form.submitButton.disabled = !this.checked" ...>
<input type="submit" name="submitButton" disabled>
</form>
Вот филддл
Вот javascript для работы с ним
$(function(){
$('#check').click(function(){
if($(this).attr('checked')!="checked"){
$("#post").attr("disabled","disabled");
} else {
$("#post").removeAttr("disabled");
}
});
});
$ (this).attr('checked') всегда будет true, он просто считывает значение "checked" attr,
использование
this.checked
или
$(this).prop('checked')
Смотрите это: http://jsfiddle.net/m6aBZ/
Использовать .is(':checked')
$('#check').click(function() {
if(!$(this).is(':checked')) {
$('#post').attr("disabled","disabled");
} else {
$('#post').removeAttr('disabled');
}
});
Отключает ли он его, если вы проверяете, а затем снимите флажок? Если это так, то вам просто нужно отключить как состояние по умолчанию.
this.form.submit.disabled = !this.checked
и все готово. Но не давайте элементам управления формы имя или идентификатор отправки или любое другое стандартное имя свойства формы (например, post ).