2013-03-21 135 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元素中定義的操作。