Кнопка HTML не активируется без отключения - PullRequest
9 голосов
/ 01 августа 2011

Поскольку IE (<8?) Не позволяет мне изменять цвет текста отключенной кнопки и вводит ужасную тень (эффект рельефа), я хочу имитировать поведение отключенной кнопки.Эта кнопка будет отключена, если в форме есть ошибки ввода. </p>

Вместо отключения я могу изменить класс в JS, чтобы затемнить кнопку и т. Д., Когда происходит проверка формы.То, что я также хочу сделать, это сделать его не кликабельным, чтобы пользователь не мог отправить форму.(Как) я могу это сделать?

Спасибо

Ответы [ 4 ]

21 голосов
/ 01 декабря 2015

IE10 + и современные браузеры Ответ

Этот не решит вашу проблему , поскольку вы используете , но для тех, кто использует современные браузеры ичтобы ответить на первоначальный вопрос:

Кнопка HTML не активируется без отключения

... это работает просто и элегантно:

.no-click {
    pointer-events: none;
}

Простодобавьте этот класс в ваш интерфейс:

<button class="no-click">
2 голосов
/ 01 августа 2011
<form onSubmit="return validate(this)"

Просто верните false, чтобы остановить отправку

, вы также можете добавить функцию в window.onload:

window.onload=function() {
  document.getElementsByTagName("form")[0]).onsubmit=function() {
    return validate(this);
  }
}
function validate(theForm) {
  // if not valid
  return false;

  // else
  return true;
}

Если вы хотите придерживаться новейших лучших практик,вы будете использовать addEventListener или attachEvent или jQuery bind

Comment From @ BrendanEich :

@ mplungjan, когда щелчок по кнопке submit просто выпадает из кнопки;Форма на представлении явно лучше.

0 голосов
/ 01 августа 2011

Ничто не выходит за пределы в решении этого. Сначала включите вашу кнопку, затем с помощью Jquery добавьте нужный класс addClass (вы также можете удалить старый класс), затем снова отключите кнопку:

$("#yourbuttonid").click(function(){
    $(this).removeAttr("disabled").removeClass("classname").addClass("classname2").attr("disabled", "disabled");
});
0 голосов
/ 01 августа 2011

Вам необходимо вернуть false из события onclick:

<input type="submit" value="Submit" onclick="return test();" />

или

<input type="submit" value="Submit" onclick="return false;" />

ПРИМЕЧАНИЕ: вы должны использовать return в onclick.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...