通常我的表单阻止用户在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>
我做错了什么?感谢
答案 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
元素中(就像您开始那样)。
其他一些注意事项: