0

我有一个带有此验证 javascript 的表单。Js检查是否选择了值。如果两个下拉选项都被选中,则发送表单。

但是发送不起作用。怎么了?

谢谢大家;-)

<script type="text/javascript">
$(document).ready(function(){
$("#submit").click(function (e) {
   if($('#species').find(":selected").val()===""){
     //alert("empty");
     $("#msg1").html("Required");

   }    
   if($('#species2').find(":selected").val()===""){
     //alert("empty2");
     $("#msg2").html("Requires");

   }
   e.preventDefault()
});
});
</script>

HTML:

<form  method="post" action="send.php">
<label for="species" id="bobo">*Species:</label><br />

<div id="msg1"></div>
<select id="species" name="species" size="1">
<option value="">Please choose a species</option>
<option value="21">Chicken</option>
<option value="28">Turkey</option>
</select>

<br />

<div id="msg2"></div>
<select id="species2" name="species2" size="1">
<option value="">Please choose a species2</option>
<option value="21">Chicken</option>
<option value="28">Turkey</option>
</select>

<br />


<input id="submit" type="submit" value="Submit">
</form>
4

3 回答 3

2

首先,您应该将submit事件附加到form元素,因为可以在不单击提交按钮的情况下发送表单。

即(假设你给form你的表格一个id):

$('#form').submit(function(e) { ... });

其次,当您调用时e.preventDefault(),它会取消操作,因此不会提交表单。

如果有错误则放入语句,因此只有e.preventDefault()在有错误时才会调用它。if

于 2013-03-21T16:50:33.660 回答
0

$("form").submit()在确认选择了这两个值后,您忘记了调用。

换句话说,您从来没有打电话给您提交表单。你应该把它放在最后一次检查之后,并将它移动e.preventDefault()到点击处理函数主体的第一行。

于 2013-03-21T16:50:19.330 回答
0

您的 html 中的提交按钮将触发 httprequest 到您的操作。但在您的 javascript 中,您使用e.preventDefault(). 这将阻止 html 默认行为提交您的序列化表单数据。如果要先运行 javascript 验证,然后在验证后提交表单,则需要使用 ajax。否则,提交按钮将自动提交您在表单中的任何内容,并将您重定向到 html 元素中定义的操作。

于 2013-03-21T16:51:19.410 回答