как задизаблить (сделать неактивной) submit
как задизаблить (сделать неактивной) submit пока не заполнены поля формы?
|
<input type="submit" disabled="disabled" value="йцукенГ" /> elem.disabled=true elem.disabled=false |
Gvozd, топикстартер, наверное, хочет узнать, как узнать, что поля формы не заполнены:)
skif, так вот — никак. Единственный рабочий способ — по setInterval проверять, все ли заполнено, и задизейбливать/раздизейбливать кнопку. А еще лучше — просто проверять все-таки по сабмиту. |
hogart,
да.наврено вы правы в нуждах топик-стартера.а вот по поводу реализации я пооптимистичней сомтрю skif, навешиваете на все поля формы(на onchange например.возможны вариации) специальную функцию-чекер. каждый раз эта функция будет проверять заполненость всех полей и в случае необходимости менять состояние сабмита.как результатпроверок меньше чем по интервалу |
Gvozd, хз. По интервалу чекер будет выполняться как бы в отдельном треде. По onchange — в основном. То есть если форма большая и/или со сложными условиями — будут тормоза.
Мы боролись с этим на my.ya.ru, когда я там работал, в формах добавления постов. В итоге оторвали этот дизейблинг к чертям. |
Тогда вижу как вариант на onchange вешать и снимать settimeout
например изменяем элемент формы. набрали символ.повесили таймаут на через секунду. есл инабрали еще символ, снова сняли и повесили на столько же. и таку до тех пор пока пользователь не успокоится, и не перестанетт вводить символы.через секунду произойдет проверка. хотя тоже не уверен насчет скорости.проверить надо потестировать. в мои цели не входит написание оптимального варианта. а вот ТС-у есть над чем подумать |
Gvozd, интуиция подсказывает, что скорость таки будет не ахти. Впрочем, действительно, надо смотреть.
Все-таки я лично делал бы проверку по сабмиту формы. Да, не так красиво, зато надежно. |
Gvozd,
Я так реализовал не раз, никаких тормозов. |
Цитата:
Цитата:
Дизаблинг кнопки сабмита вообще зло, т.к. непонятно, почему она неактивна. В отличие от сообщения при попытке сабмита с последующим фокусом в проблемное поле. И проверка полей по таймауту не тормозит, главное каждому элементу свой таймаут не делать. |
Всем огромное спасибо за столь подробные подсказки...
Сам я всё это понимаю, и с удовольствием навешал бы на эту форму простой чекинг, но вот заказчик уперся Хочу, чтобы кнопка дизейблилась и всё тут... |
Часовой пояс GMT +3, время: 16:15. |