Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: disabled по условию.
 
 автор: DJ Paltus   (16.03.2009 в 12:12)   письмо автору
 
 

<form name=srch action="finda" method="post" style="padding:0; margin:0;">
  <input class="empty" id=fi name="st" value="Поиск..." onFocus="if(this.value=='Поиск...'){this.value=''}" onBlur="if(this.value==''){this.value='Поиск...'}" size="20" type="search">
  <input alt="" src="i/search_btn.gif" class="button" height="20" type="image" width="18" onLoad="if(getElementByID('fi').value=='Поиск...'){this.element.disabled='true';}">
</form>

Я пытаюсь задисэйблить кнопку отправки формы, покуда в форме не введен корректный запрос. И я сильно подозреваю, что делаю что-то не так. Не подскажете, как надо?

  Ответить  
 
 автор: PAT   (16.03.2009 в 12:31)   письмо автору
 
   для: DJ Paltus   (16.03.2009 в 12:12)
 

Вы бред какой-то написали.
И в самой задаче и, тем более, в её решении.

Во-первых, из постановки вопроса "задисаблить ПОКУДА в форме не введен корректный запрос" следует, что кнопка сабмита формы ИЗНАЧАЛЬНО (ещё ДО ВВОДА какого-либо запроса) должна иметь прописанным HTML-атрибут disabled.
Отсюда в любом случае следует, что в форме должно быть
<input type="image" disabled>


Во-вторых, лично вы, вероятнее всего, ПОНИМАЕТЕ, что значит - "корректный запрос". А вот ни я, ни браузер этого НЕ ПОНИМАЕМ.
Два слова ВАСЯ ДУРАК - это корректный запрос?
Одно слово ВАСЯ - это корректный запрос?
А слово ВАС - тоже корректно или не очень?

Из каких-таких соображений браузер должен догадаться, что ВАС - это уже ОКОНЧАТЕЛЬНЫЙ запрос, а не начало запроса ВАСЯ ДУРАК?
Что должно произойти, чтобы браузер понял, что ввод запроса ЗАВЕРШЁН и что уже следует начать проверять корректность запроса и "раздисаблить" кнопку сабмита в случае его корректности?

  Ответить  
 
 автор: DJ Paltus   (16.03.2009 в 12:54)   письмо автору
 
   для: PAT   (16.03.2009 в 12:31)
 

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

<input class="empty" name="st" value="Поиск..." onFocus="if(this.value=='Поиск...'){this.value=''}" onBlur="if(this.value==''){this.value='Поиск...'}" onKeyDown="getElementByID('fi').disabled=='false'" size="20" type="search">
<input alt="" src="i/search_btn.gif" class="button" height="20" type="image" id=fi width="18" disabled>

И так не получается...

  Ответить  
 
 автор: PAT   (16.03.2009 в 13:08)   письмо автору
 
   для: DJ Paltus   (16.03.2009 в 12:54)
 

Мда...
Во-первых, вам надо запомнить, что Javascript (в отличие от HTML) является регистроЗАВИСИМЫМ языком.
Поэтому бреда getElementByID он не понимает, а вот getElementById является его встроенным методом.

Во-вторых, вы так и не поняли того, что написано у меня в прошлый раз в пункте "во-вторых".
Событие, по которому браузер должен ПОНЯТЬ, что пора приступать к проверке, у вас в коде ОПРЕДЕЛЕНО.
И называется это событие - ПОТЕРЯ ФОКУСА полем ввода запроса.

Это, конечно, бред - ожидать от пользователя, то тот, написав что-то в строке поиска,
будет судорожно тыкать мышей по странице в надежде, что появится кнопка сабмита...
Но если вы полагаете, что вашу страницу будут посещать только такие "стукнутые" юзеры, то,
пожалуйста, берите нижеследующий код и пользуйте его:
<input class="empty" name="st" value="Поиск..." onFocus="if(this.value=='Поиск...'){this.value=''}" onBlur="if(!this.value){this.value='Поиск...';getElementById('fi').disabled = 1}; else getElementById('fi').disabled = 0" size="20" type="search">
<input alt="" src="i/search_btn.gif" class="button" height="20" type="image" id=fi width="18" disabled>

  Ответить  
 
 автор: DJ Paltus   (16.03.2009 в 13:16)   письмо автору
 
   для: PAT   (16.03.2009 в 13:08)
 

Честно говоря, кнопка-то никуда не девается, просто форма не срабатывает. Оно, конечно, заработало, но только под ИЕ, файрфокс в отказе.
Все равно спасибо за долготерпение.

  Ответить  
 
 автор: PAT   (16.03.2009 в 15:15)   письмо автору
 
   для: DJ Paltus   (16.03.2009 в 13:16)
 

Это моя ошибка - точка с запятой лишние:
<input class="empty" name="st" value="Поиск..." onFocus="if(this.value=='Поиск...'){this.value=''}" onBlur="if(!this.value){this.value='Поиск...';getElementById('fi').disabled = 1} else getElementById('fi').disabled = 0" size="20" type="search">
<input alt="" src="i/search_btn.gif" class="button" height="20" type="image" id=fi width="18" disabled>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования