2010-12-26 9 views
0

Обычно моя форма запрещала пользователям отправлять ее, когда она находилась под 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> 

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

+0

Пожалуйста, подтвердите ввод на стороне сервера и выполните санитарную обработку ввода. 'strlen ($ _ GET ['s']) <4' – haha

ответ

0

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

Несколько других вещей, чтобы отметить:

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

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

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

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

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

0

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

+0

Спасибо, это была моя первая ошибка, я пробовал это на форме, но это не работает:

lisovaccaro

0

Попробуйте добавить это в свои формы 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

Спасибо, я пробовал это, но он не работает. Вы знаете, почему? – lisovaccaro

Смежные вопросы