阻止用户提交带有特定字符串的表单

时间:2010-12-26 17:13:10

标签: php forms

通常我的表单阻止用户在4个字符以下时提交。我想添加第二个条件,阻止他们在提交字符串“Buscátuciudad”时提交表单。我尝试添加下面的条件,但它不起作用。

<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 个答案:

答案 0 :(得分:1)

您应该添加事件侦听器,而不是这样。你需要的第二件事是检查服务器端的输入,如果有人禁用JavaScript,所有这一切都毫无意义。

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

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

对于JS,你可以使用jQuery,少写更多。

答案 1 :(得分:0)

我相信你不能在输入上使用onsubmit,只能在表单本身上使用。另外,这不是一个php问题,这应该被标记为javascript

答案 2 :(得分: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;">

是的,也可以在服务器端执行。

答案 3 :(得分:0)

onsubmit元素上是否还有input?即使存在,为了保持一致性,我认为您希望将onsubmit中的所有逻辑放在form元素中(就像您开始那样)。

其他一些注意事项:

  1. 您应该将标记与代码分开。通过混合这两者,这样的事情变得不那么明显,而且更难以支持。
  2. 客户端验证对用户来说比其他任何东西更方便。即使这个工作正常,如果你问,“为什么它不会阻止用户提交不正确的东西?”然后第一个答案是,“你在服务器端检查吗?如果没有,那么你允许用户提交他们想要的东西。”