Javascript - 对同一事件进行多个客户端验证

Javascript - multiple client-side validations on same event

提问人:Julius A 提问时间:11/4/2008 更新时间:11/4/2008 访问量:860

问:

我正在客户端对 samve 事件执行两次验证。 我已经定义了我的验证,如下所示

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

伪代码

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}
}

伪代码

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

当 时,我从未运行过第二次验证。 有人能很快发现我在这里忽略的东西吗?请?bPendingchanges=false

JavaScript HTML 验证

评论


答:

0赞 matt b 11/4/2008 #1

您的第二份声明将永远无法达成。执行在 之后停止。returnjavascript:return prepareSave()

如果两个函数都返回 true,看起来您想返回 true - 因此,请执行:

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

评论

0赞 sblundy 11/4/2008
设置按钮时,该代码将仅执行一次验证。然后,您想将它们包装在一个匿名函数中,或者将它们变成一个字符串。
0赞 matt b 11/4/2008
为什么一个答案与其他三个答案相同,却是唯一被否决的答案?
0赞 matt b 11/4/2008
此外,我不打算纠正他将处理程序附加到对象的方式(可以改进),只是无法访问的返回语句。
0赞 Julius A 11/4/2008
简单的家伙,谢谢。我现在可以调用这两个验证。好东西。
0赞 sblundy 11/4/2008 #2

这是因为返回会阻止运行第二个验证。试试这个

btnSearch.Attributes["OnClick"] = "javascript:return prepareSave() && prepareSearch();"
0赞 Greg 11/4/2008 #3

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

1) 你不应该有 “javascript:”
2) 永远不会被执行,因为退出你的事件处理程序
return prepareSearch();"return prepareSave();

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

2赞 Piskvor left the building 11/4/2008 #4

return,顾名思义,将控制权交还给任何调用相关代码的代码。因此,返回语句之后的任何内容

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

从不执行。尝试return (prepareSave() && prepareSearch());