2013-03-21 107 views
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> 
+0

当你说发送不工作...你是什么意思?你的游戏机说什么是错误?你的网络选项卡是否有实际被解雇的请求?我们可以帮助你,但你必须帮助我们帮助你 – iAmClownShoe 2013-03-21 16:47:37

+0

我不能提交表格 – user2123738 2013-03-21 16:48:29

+0

首先。这丝毫没有帮助。幸运的是,我认为我知道答案 – iAmClownShoe 2013-03-21 16:49:34

回答

2

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

即(假定你给的form一个ID到表单):

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

其次,当你调用e.preventDefault(),它取消了行动,因此没有提交表单。

如果出现错误,则将e.preventDefault()置于if语句中,因此如果出现错误,则会调用只有

+0

我说,“(假设你给你的表格一个表格ID)”。我不希望他将它绑定到任何形式! – CWSpear 2013-03-21 16:56:17

+0

Ooooh - 哈哈哈对不起,:)我删除了评论 – 2013-03-21 16:57:04

+0

CWSPear,非常感谢。像魅力一样工作! – user2123738 2013-03-21 17:20:45

0

您确认这两个值被选择后,忘了$("form").submit()电话。

换句话说,你从来没有打过电话提交表格。您应该在最后一次检查后立即将其作为点击处理函数主体中的第一行移动e.preventDefault()

0

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