简体   繁体   English

Javascript-同一事件上的多个客户端验证

[英]Javascript - multiple client-side validations on same event

I am performing two validations on the client side on the samve event. 我正在samve事件的客户端执行两次验证。 I have defined my validations as shown below 我已经定义了我的验证,如下所示

btnSearch.Attributes["OnClick"] = "javascript:return prepareSave(); return prepareSearch();"

Pseudo code for 的伪代码

prepareSave():
{
  if (bPendingchanges)
    {
     return confirm('Need to save pending changes first, click OK and loose changes or cancel to save them first')
    }
  else
   {return true}
}

Pseudo code for 的伪代码

prepareSearch():
{
  if (bNoSearchText)
    {
      alert('Please specify search criteria before proceeding')
      return false;
   }
  else
   {return true;}
}

When bPendingchanges=false , I never get the second validation running. bPendingchanges=false ,我永远不会运行第二个验证。 Anyone who can quickly spot what I have overlooked here? 任何人都可以快速发现我在这里忽略的地方吗? Please? 请?

return , as the name implies, returns control back to whatever called the code in question. 顾名思义, return会将控制权返回到所谓的代码。 Therefore, anything that's after a return statement 因此,在return语句之后的所有内容

return prepareSave(); return prepareSearch();
//                    ^^^^^^^^^^^^^^^^^^^^^^^ e.g. this part

never executes. 永远不会执行。 Try return (prepareSave() && prepareSearch()); 尝试return (prepareSave() && prepareSearch());

Your second return statement will never be reached. 您的第二个return声明将永远无法实现。 Execution stops after javascript:return prepareSave() . javascript:return prepareSave()之后执行将停止。

Looks like you want to return true if both functions return true - therefore, do: 如果两个函数都返回true,则看起来您想返回true-因此,请执行以下操作:

btnSearch.Attributes["OnClick"] = javascript: return prepareSave() && prepareSearch();

That's because the return prevents the second validation from running. 这是因为返回值阻止了第二次验证的运行。 Try this 尝试这个

btnSearch.Attributes["OnClick"] = "javascript:return prepareSave() && prepareSearch();"

"javascript:return prepareSave(); return prepareSearch();"

1) You shouldn't have the "javascript:" 1)您不应该使用“ javascript:”
2) return prepareSearch(); 2) return prepareSearch(); will never be executed, because "return prepareSave(); exits your event handler 永远不会执行,因为"return prepareSave();退出事件处理程序

Try "return (prepareSave() && prepareSearch());" 尝试"return (prepareSave() && prepareSearch());"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM