簡體   English   中英

在設計用戶身份驗證之前,preventDefault

[英]preventDefault before devise User authenticate

我在索引中有一個帶有用戶注冊表格的模式。 當按鈕保存已單擊時,我創建了一個javascript。 當用戶有錯誤時,警報會顯示在模式中,但會重定向其他頁面。

當用戶有錯誤時,我不會頁面重定向。

這是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); } }); }); 

你可以做這樣的事情

 <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不會允許重新加載表單。 我希望這有幫助。

用return false代替return,它將成功。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM