Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.03.2009, 15:55
Аватар для skif
Интересующийся
Отправить личное сообщение для skif Посмотреть профиль Найти все сообщения от skif
 
Регистрация: 11.03.2009
Сообщений: 15

как задизаблить (сделать неактивной) submit
как задизаблить (сделать неактивной) submit пока не заполнены поля формы?
Ответить с цитированием
  #2 (permalink)  
Старый 20.03.2009, 16:08
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

<input type="submit" disabled="disabled" value="йцукенГ" />

elem.disabled=true
elem.disabled=false
Ответить с цитированием
  #3 (permalink)  
Старый 20.03.2009, 19:15
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Gvozd, топикстартер, наверное, хочет узнать, как узнать, что поля формы не заполнены

skif, так вот — никак. Единственный рабочий способ — по setInterval проверять, все ли заполнено, и задизейбливать/раздизейбливать кнопку.
А еще лучше — просто проверять все-таки по сабмиту.
Ответить с цитированием
  #4 (permalink)  
Старый 20.03.2009, 19:25
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

hogart,
да.наврено вы правы в нуждах топик-стартера.а вот по поводу реализации я пооптимистичней сомтрю
skif,
навешиваете на все поля формы(на onchange например.возможны вариации) специальную функцию-чекер.
каждый раз эта функция будет проверять заполненость всех полей и в случае необходимости менять состояние сабмита.как результатпроверок меньше чем по интервалу
Ответить с цитированием
  #5 (permalink)  
Старый 20.03.2009, 19:33
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Gvozd, хз. По интервалу чекер будет выполняться как бы в отдельном треде. По onchange — в основном. То есть если форма большая и/или со сложными условиями — будут тормоза.

Мы боролись с этим на my.ya.ru, когда я там работал, в формах добавления постов. В итоге оторвали этот дизейблинг к чертям.
Ответить с цитированием
  #6 (permalink)  
Старый 20.03.2009, 19:43
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Тогда вижу как вариант на onchange вешать и снимать settimeout

например изменяем элемент формы.
набрали символ.повесили таймаут на через секунду.
есл инабрали еще символ, снова сняли и повесили на столько же.
и таку до тех пор пока пользователь не успокоится, и не перестанетт вводить символы.через секунду произойдет проверка.
хотя тоже не уверен насчет скорости.проверить надо потестировать.
в мои цели не входит написание оптимального варианта.
а вот ТС-у есть над чем подумать
Ответить с цитированием
  #7 (permalink)  
Старый 20.03.2009, 20:35
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Gvozd, интуиция подсказывает, что скорость таки будет не ахти. Впрочем, действительно, надо смотреть.
Все-таки я лично делал бы проверку по сабмиту формы. Да, не так красиво, зато надежно.
Ответить с цитированием
  #8 (permalink)  
Старый 20.03.2009, 21:10
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Gvozd,
Я так реализовал не раз, никаких тормозов.
Ответить с цитированием
  #9 (permalink)  
Старый 21.03.2009, 01:20
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Gvozd
навешиваете на все поля формы(на onchange например.возможны вариации) специальную функцию-чекер.
И в результате мы не сможем нажать на кнопку, пока не выйдем из поля, т.к. только тогда сработает change.

Сообщение от hogart
По интервалу чекер будет выполняться как бы в отдельном треде.
Нет в JS отдельных тредов.

Дизаблинг кнопки сабмита вообще зло, т.к. непонятно, почему она неактивна. В отличие от сообщения при попытке сабмита с последующим фокусом в проблемное поле.

И проверка полей по таймауту не тормозит, главное каждому элементу свой таймаут не делать.
Ответить с цитированием
  #10 (permalink)  
Старый 23.03.2009, 02:14
Аватар для skif
Интересующийся
Отправить личное сообщение для skif Посмотреть профиль Найти все сообщения от skif
 
Регистрация: 11.03.2009
Сообщений: 15

Всем огромное спасибо за столь подробные подсказки...
Сам я всё это понимаю, и с удовольствием навешал бы на эту форму простой чекинг, но вот заказчик уперся Хочу, чтобы кнопка дизейблилась и всё тут...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать электронный каталог продукции? natarius Серверные языки и технологии 6 24.05.2009 20:56
как сделать плавное затухание страницы magistr_bender Элементы интерфейса 1 18.03.2009 14:34
Как сделать справочное окно? Vlaimir Events/DOM/Window 13 05.01.2009 14:06
Как сделать слой неактивным AlexMak Events/DOM/Window 3 04.12.2008 15:56
Может кто подсказать как можно сделать submit из левого фрейма в правый maxander Internet Explorer 1 28.11.2008 10:15