2015-07-10 64 views
0

我在我的索引中有用戶註冊表單的模式。 我創建一個JavaScript時,buttom保存點擊。 當用戶出現錯誤時,警報將顯示在模式中,但會重定向其他頁面。preventDefault之前devise用戶身份驗證

我會在用戶有錯誤時重定向頁面。

這是javascript和ajax。

$("#update").click(function(e){ 
 
       
 
       
 
       
 
       if(!validarEmail()){ 
 
        $("#divalerta").addClass("alert-danger"); 
 
        $("#divalerta").removeClass("alert-success"); 
 
        var j = $("<p id=\"alerta\"><span class=\"glyphicon glyphicon-exclamation-sign\"></span>Formato de email incorrecto</p>"); 
 
        mostrarAlerta(j); 
 
        e.preventDefault(); 
 
        return;    
 
       } 
 
       if($("#newpass").val() != $("#retypepass").val()){ 
 
        $("#divalerta").addClass("alert-danger"); 
 
        $("#divalerta").removeClass("alert-success"); 
 
        var j = $("<p id=\"alerta\"><span class=\"glyphicon glyphicon-exclamation-sign\"></span>Las contraseñas no concuerdan</p>"); 
 
        mostrarAlerta(j);     
 
        e.preventDefault(); 
 
        return; 
 
       } 
 
       
 
       var datos = {}; 
 
       datos['accion'] = "ingresar"; 
 
       datos['nombre'] = $("#nombre").val(); 
 
       datos['apellido'] = $("#apellido").val(); 
 
       datos['email'] = $("#email").val(); 
 
       datos['pass'] = $("#newpass").val(); 
 
       //var params={'datos' : datos}; 
 

 
       $.ajax({ 
 
        method: "POST", 
 
        async: false, 
 
        data: datos, 
 
        url: "/", 
 
        success: function(response){ 
 
         var arr = response.split("-"); 
 
         if(arr[0]=="ok"){ 
 
          $("#divalerta").removeClass("alert-danger"); 
 
          $("#divalerta").addClass("alert-success"); 
 
          $("#update").prop('disabled',true);         
 
         } 
 
         else{ 
 
          $("#divalerta").addClass("alert-danger"); 
 
          $("#divalerta").removeClass("alert-success"); 
 
         } 
 
         var j = $("<p id=\"alerta\"><span class=\"glyphicon glyphicon-exclamation-sign\"></span>"+arr[1]+".</p>"); 
 
         mostrarAlerta(j); 
 
        } 
 

 
       }); 
 
      });

回答

0

用return false替換return,它會執行這個操作。

+0

謝謝男人,我解決了它 – user3486836

0

你可以做這樣的事情

<form onsubmit="return validator()" 
 

 
var validator = function(){ 
 
       
 
       
 
       
 
       if(!validarEmail()){ 
 
        $("#divalerta").addClass("alert-danger"); 
 
        $("#divalerta").removeClass("alert-success"); 
 
        var j = $("<p id=\"alerta\"><span class=\"glyphicon glyphicon-exclamation-sign\"></span>Formato de email incorrecto</p>"); 
 
        mostrarAlerta(j);    
 
        return false;    
 
       } 
 
       if($("#newpass").val() != $("#retypepass").val()){ 
 
        $("#divalerta").addClass("alert-danger"); 
 
        $("#divalerta").removeClass("alert-success"); 
 
        var j = $("<p id=\"alerta\"><span class=\"glyphicon glyphicon-exclamation-sign\"></span>Las contraseñas no concuerdan</p>"); 
 
        mostrarAlerta(j); 
 
        return false; 
 
       } 
 
       
 
       var datos = {}; 
 
       datos['accion'] = "ingresar"; 
 
       datos['nombre'] = $("#nombre").val(); 
 
       datos['apellido'] = $("#apellido").val(); 
 
       datos['email'] = $("#email").val(); 
 
       datos['pass'] = $("#newpass").val(); 
 
       //var params={'datos' : datos}; 
 

 
       $.ajax({ 
 
        method: "POST", 
 
        async: false, 
 
        data: datos, 
 
        url: "/", 
 
        success: function(response){ 
 
         var arr = response.split("-"); 
 
         if(arr[0]=="ok"){ 
 
          $("#divalerta").removeClass("alert-danger"); 
 
          $("#divalerta").addClass("alert-success"); 
 
          $("#update").prop('disabled',true);         
 
         } 
 
         else{ 
 
          $("#divalerta").addClass("alert-danger"); 
 
          $("#divalerta").removeClass("alert-success"); 
 
         } 
 
         var j = $("<p id=\"alerta\"><span class=\"glyphicon glyphicon-exclamation-sign\"></span>"+arr[1]+".</p>"); 
 
         mostrarAlerta(j); 
 
        } 
 

 
       }); 
 
      return false; 
 
      });

通過這種方式,形式永遠不會重新加載。你可以修改你如何選擇的方式,但只要知道onsubmit屬性返回false就不會讓表單重新加載。我希望這有幫助。