Включение кнопки отправки после нажатия на текстовое поле

0

У меня есть следующий код для включения кнопки отправки после нажатия на этот флажок.

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');
}
});

Но это не работает в моем локальном хосте. Кнопка включена все время, даже если флажок не выбран. Пожалуйста, помогите мне заставить его работать.

  • 0
    Слушатель может быть this.form.submit.disabled = !this.checked и все готово. Но не давайте элементам управления формы имя или идентификатор отправки или любое другое стандартное имя свойства формы (например, post ).
  • 0
    Атрибут флажок устанавливает флажок по умолчанию. Добавление и удаление атрибута не изменяет текущее значение проверенного свойства (т. Е. Проверяется или нет ввод), а также проверка наличия атрибута не сообщает вам, установлен флажок или нет.
Теги:

6 ответов

1
$('#check').click(function() {
    $('#post').prop('disabled', !$(this).is(':checked'));
}

.attr() проверяет атрибут в HTML, а не текущее состояние HTML; .is(':checked') проверяет последний. Кроме того, я считаю предпочтительным использовать .prop() для динамического изменения состояния элемента.

0

Много ответов.

Не вызывайте какой-либо элемент управления формой "submit", поскольку он будет form.submit метод отправки формы (т.е. form.submit будет ссылаться на элемент управления, а не на метод).

Все, что вам нужно, это что-то вроде:

<form ...>
  <input type="checkbox" onclick="this.form.submitButton.disabled = !this.checked" ...>
  <input type="submit" name="submitButton" disabled>
</form>
0

Вот филддл

Вот javascript для работы с ним

$(function(){
$('#check').click(function(){
    if($(this).attr('checked')!="checked"){
        $("#post").attr("disabled","disabled");

    } else {
        $("#post").removeAttr("disabled");
    }
});
});
  • 0
    Это не работает в моем localhost. Есть ли что-то, о чем нужно позаботиться, работая на localhost?
  • 0
    @ user2727874 Вы видели какие-либо ошибки консоли в инструментах разработчика браузеров?
Показать ещё 3 комментария
0

$ (this).attr('checked') всегда будет true, он просто считывает значение "checked" attr,

использование

this.checked

или

$(this).prop('checked')

Смотрите это: http://jsfiddle.net/m6aBZ/

  • 0
    Он работает нормально в jsfiddle. Но в моем localhost это не работает. Кнопка включена все время.
  • 0
    Это странно, вы получаете какие-либо ошибки js, просто предупредите (this.checked), чтобы увидеть его значение
Показать ещё 3 комментария
0

Использовать .is(':checked')

$('#check').click(function() {
    if(!$(this).is(':checked')) {
        $('#post').attr("disabled","disabled");   
    } else {
        $('#post').removeAttr('disabled');
    }
});
0

Отключает ли он его, если вы проверяете, а затем снимите флажок? Если это так, то вам просто нужно отключить как состояние по умолчанию.

  • 0
    Нет, кнопка включена все время. Если установить значение по умолчанию «отключено», то кнопка будет отключена все время, даже если флажок установлен или не установлен.
  • 0
    Вы загружаете файл jquery libarary в свой код
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню