1

Below is my javascript function to authenticate a user... I wanna retain the form on login failure with the username/password textbox being blank.

           function authenticate(form)
      {
          if (form.username.value == "Administrator" && form.password.value == "password")
          {
             window.open('OrderList.aspx')/*opens the target page while Id & password matches*/
         }
         else 
         {
             alert("Error Password or Username")
             $("#username").val("")
             $("#password").val("")
             form.????????????('Login.aspx')//so that it stays on the same page wihout reloading the page. 
I tried window.open, but it opens another instance of the form.
             /*displays error message*/
         }
     }
4

3 回答 3

3

我假设你正在解雇这个onclick要么onSubmit。为了帮助防止表单提交,您需要使用onSubmit并让它返回此函数的结果。在验证失败的情况下,您的 javascript 函数需要return false;阻止表单被提交。

当验证通过时,您可以return true;或者什么都不做(假设您希望表单继续被提交......如果您只想发出对 的调用window.open(),那么您应该return false;在这两种情况下。

有关更详细的解释,请参阅对类似问题的回答。

至于从文本字段中删除值,您当前拥有的(例如下面的代码)将为此工作 - 您目前没有看到它的影响的唯一原因是页面正在重新加载,因为表单正在提交.

$("#username").val("");
$("#password").val("");
于 2013-04-25T13:11:08.267 回答
2

正如德米特里所说,你可以这样做:

$(form).on(
    'submit',
    function(){
        if (passwordsMatchOrWhatever){
            //do whatever a successful submission should
        } else {
            //reset field values if you want to
            return false;
        }
    }
);

提交表单时,会触发“提交”事件。上面的代码使用 jQuery 附加一个函数以在发生这种情况时运行。从该函数返回 false 会取消整个提交。

于 2013-04-25T13:17:48.040 回答
2

处理onSubmit你的功能,只是return false- 什么都不会发生。

  function authenticate(form)
      {
          if (form.username.value == "Administrator" && form.password.value == "password")
          {
             window.open('OrderList.aspx')/*opens the target page while Id & password matches*/
         }
         else 
         {
             alert("Error Password or Username")
             $("#username").val("")
             $("#password").val("")
            return false;
         }
     }
于 2013-04-25T13:11:01.510 回答