Почему эта форма не проверяется? - PullRequest
1 голос
/ 17 февраля 2009

Оператор onsubmit не вызывается:

<form action="index.php" method="post" onsubmit="return validateSearchKeyword()">
        <input class="text_search" id="text_search" name="text_search" type="text" value="search" onfocus="if (this.value=='search') this.value = ''" onBlur="if (this.value=='') this.value = 'search'"  />
    </form> 

Это моя функция проверки:

function validateSearchKeyword()
{ alert ('sad');//for testing purposes - this alert is not showed
if (document.getElementById('text_search').value==""){creatediv('divWarnSearch','You must supply a value', '120px', '250px');return false;}
}

Функция createiv прекрасно работает с другими формами, поэтому проблема не в этом.

Есть идеи? Спасибо

Ответы [ 4 ]

2 голосов
/ 17 февраля 2009

Вам не хватает кнопки отправки, что может привести к тому, что пользователи не смогут отправить форму в некоторых браузерах.

Кроме того, было бы полезно, если бы вы опубликовали свою функцию проверки, чтобы мы могли проверить, есть ли там проблема, например, это возвращает логическое значение?

Каковы ваши результаты, если вы используете следующее:

<form ... onsubmit="alert('Foo'); return true">
0 голосов
/ 17 февраля 2009

Ваша проблема:

onBlur="if (this.value=='') this.value = 'search'"

Когда вы отправляете, вы потеряли фокус на текстовом поле и событие запускается: попробуйте поставить

alert(document.getElementById('text_search').value);

и вы получите "поиск", а не пустую строку ...

0 голосов
/ 17 февраля 2009

Проверьте, чтобы убедиться, что функция, которую вы вызываете, действительно существует, а затем я бы прошел через эту функцию, чтобы проверить наличие проблем. Firebug может быть вам полезен, или вы можете просто вставить следующую строку в верхнюю часть вызываемой функции (чтобы убедиться, что она так далеко):

alert('here');
0 голосов
/ 17 февраля 2009

пробовал onsubmit="javascript: validateSearchKeyword();"? AFAIK, он уже возвращается, указывать его не нужно.

Вы также можете попробовать удалить ().

А также, кнопка отправки , как говорит Mr Potato Head , если вы не удалили ее, чтобы сделать код кратким.

РЕДАКТИРОВАТЬ: Это был плохо продуманный пост. Это хороший пример того, чего не следует делать. Если вы обнаружите, что любое из этих предложений реализовано в вашем коде, выполните рефакторинг!

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