Запретить пользователям отправлять форму с определенной строкой - PullRequest
0 голосов
/ 26 декабря 2010

Обычно моя форма запрещала пользователям отправлять ее, когда она была менее 4 символов. Я хочу добавить второе условие, которое не позволяет им отправлять форму, когда они отправляют строку «Buscá tu ciudad». Я попытался добавить условие ниже, но это не сработало.

<form role="search" method="get" action="http://chusmix.com/" onsubmit="if (document.getElementById('s').value.length < 4) return false;" style="float:right; display:inline; padding-right:10px;">

<input class="ubicacion" name="s" id="s" tabindex="1" onsubmit="if ((document.getElementById('s').value.length < 4) || (document.getElementById('s')== 'Cambiá de ciudad')) return false;" onfocus="if (this.value=='Cambiá de ciudad') this.value = ''" onblur="if(this.value == '') this.value = 'Cambiá de ciudad'" type="text" maxlength="80" size="28" value="Cambiá de ciudad" style="width:198px; color:grey;">

<input type="submit" id="searchsubmit" value="Buscar" />
</form>

Что я делаю не так? Спасибо

Ответы [ 4 ]

1 голос
/ 26 декабря 2010

Вы должны добавить слушателей событий, а не так.Во-вторых, вам нужно проверить ввод на стороне сервера, если кто-то отключает JavaScript, все это бессмысленно.

$s = htmlspecialchars($_POST["s"], ENT_QUOTES);

if(strlen($s) < 4 || $s == "Buscá tu ciudad"){
 $error[] = "something";
}

Для JS вы можете использовать jQuery, пишите меньше, делайте больше.

0 голосов
/ 26 декабря 2010

Имеется ли даже onsubmit для элемента input? Даже если это так, для согласованности я думаю, что вы захотите поместить всю логику в onsubmit для элемента form (как вы начали делать).

Несколько других замечаний:

  1. Вы должны отделить вашу разметку от вашего кода. Сочетая эти две вещи, такие вещи становятся гораздо менее очевидными и их намного сложнее поддерживать.
  2. Проверка на стороне клиента более удобна для пользователя, чем что-либо еще. Даже если это работает правильно, если вы спросите: «Почему это не мешает пользователям отправлять что-то неверное?» тогда первым ответом будет: «Проверяете ли вы на стороне сервера? Если нет, то вы разрешаете пользователям отправлять все, что они захотят».
0 голосов
/ 26 декабря 2010

Попробуйте добавить это к своим формам onSubmit, а не к текстовому полю.

<form role="search" method="get" action="http://chusmix.com/" onsubmit="if (document.getElementById('s').value.length < 4 || document.getElementById('s') == 'Cambiá de ciudad') return false;" style="float:right; display:inline; padding-right:10px;">

И да, выполните и на стороне сервера.

0 голосов
/ 26 декабря 2010

Я считаю, что вы не можете использовать onsubmit на входе, только на самой форме.Кроме того, это не вопрос php, это должно быть помечено javascript

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