2015-07-10 65 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就不会让表单重新加载。我希望这有帮助。