2012-02-07 44 views
0

我有一個表單,它具有jQuery驗證。我也有提交按鈕,它被點擊時重定向到page.html。所以當我點擊提交,如果下拉列表的值是'請選擇',驗證會出現,但它會重定向到page.html。我如何阻止它做到這一點?我的jquery代碼:防止提交按鈕從重定向如果jQuery驗證發生

<script>  
    $(function(){  
      function validate(id){  
       var enabled = ($("input[name='attendance" + id + "']:checked").val() == 'Yes');   
       if(enabled){    
        //Please select option is selected    
        if($("#colour" + id)[0].selectedIndex == 0){     
        alert('Please select color');     
        return false;    
        }    
        //Please select option is selected    
        if($("#shade" + id)[0].selectedIndex == 0){     
         alert('Please select shade');     
         return false;    
        } 
       }  
       return true;  
      }; 

      $("input[name^='attendance']").click(function() { 

       var id = this.name.replace('attendance', '');  
       $("#colour" + id + ", #shade" + id).prop("disabled", this.value == 'No');   
       validate(id);  
      });  
      $("input:submit").click(function(){   
       var retVal = false; 
       $.each([1, 2], function(i, val){ 
        retVal = (validate(val) || retVal); 
       }); 
       return retVal; 
      }); 
     }); 
    </script> 
+0

檢查來自'validate(val)'的返回值,並在開始時添加'event.preventDefault()',並在最後一行中使用'$(')觸發submit() #formid')提交()'。 – run 2012-02-07 05:16:32

+0

@run您是否可以檢查我的代碼:http://pastebin.com/sMJJuRGu並在必要時進行編輯謝謝 – Jacob 2012-02-07 05:21:49

+0

也可以將您的html代碼也發給我 – run 2012-02-07 06:01:26

回答

1

防止表單在驗證失敗時提交調用event.preventDefault()

+0

我已將event.preventDefault()添加到腳本中。你能檢查我是否做得對:http://pastebin.com/sMJJuRGu。如果需要編輯。謝謝 – Jacob 2012-02-07 05:20:48

0

嘗試這樣,

$(function(){  
     function validate(id){  
      var enabled = ($("input[name='attendance" + id + "']:checked").val() == 'Yes');   
      if(enabled){    
       //Please select option is selected    
       if($("#colour" + id)[0].selectedIndex == 0 || $("#shade" + id)[0].selectedIndex == 0) 
       {     
        alert('Please select color');     
        return false;    
       } 
      } 
      return true;  
     }; 

     $("input[name^='attendance']").click(function(e) { 

      var id = this.name.replace('attendance', '');  
       $("#colour" + id + ", #shade" + id).prop("disabled", this.value == 'No');   
       validate(id);  
     });  

     $("input:submit").click(function(event){   

      event.preventDefault(); 
      var retVal = false; 
      $.each([1, 2], function(i, val){ 
       retVal = (validate(val) || retVal); 
      }); 
      if(retVal){$('#formID').submit();} 
     }); 
    }); 
+0

它似乎在工作,但點擊提交時,它什麼也沒有做。它應該把它發送到mysql並重定向。提交按鈕的名稱匹配input:submit。我的表單ID是列表即時猜測它是如果(retVal){$('列表')? – Jacob 2012-02-07 06:41:47

+0

這是jQuery所使用的php:http://pastebin.com/waaSAijc – Jacob 2012-02-07 11:18:05

+0

這將提交你的表單。要將數據保存在數據庫中,您需要從表單操作中發佈數據。例如:

在PHP中,如果發佈數據,您可以將標題重定向到相關文件。 – 2012-02-08 03:04:14

0
<script type="text/javascript"> 

$(document).ready(function() { 

    function validate(id){  

     var enabled = ($("input[name='attendance" + id + "']:checked").val() == 'Yes');   
     if(enabled){    
     //Please select option is selected    
     if($("#colour" + id)[0].selectedIndex == 0){ 
      alert('Please select color');     
      return false; 
     }    
     //Please select option is selected    

     if($("#shade" + id)[0].selectedIndex == 0){     

      alert('Please select shade');     
      return false;    

     } 

     }  
     return true;  

    } 
    $("input[name^='attendance']").click(function() { 
     var id = $(this).attr('id').match(/\d+(,\d+)?/)[0]; 

     var val = ($(this).val() == 'No') ? true : false; 

     $('#colour'+id).attr("disabled", val); 
     $('#shade'+id).attr("disabled", val); 

     validate(id);  

     });  

     $("input:submit").click(function(event){ 

       event.preventDefault(); 
       var retVal = false; 

       $("input[name^='attendance']").each(function(){ 

        var id = $(this).attr('id').match(/\d+(,\d+)?/)[0]; 
        retVal = (validate(id) || retVal); 

       }); 

       return retVal; 

      }); 

}); 


    </script> 

在HTML中你錯過了提交按鈕。我不清楚你的要求希望你可以修改上面的代碼。並得到結果

+0

在@Parag Gajjar的例子工作,但點擊提交時,它不會做任何事情,但運行jquery。它也應該提交給數據庫 – Jacob 2012-02-07 10:04:34