提问人:Julius A 提问时间:11/4/2008 更新时间:11/4/2008 访问量:860
Javascript - 对同一事件进行多个客户端验证
Javascript - multiple client-side validations on same event
问:
我正在客户端对 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
答:
0赞
matt b
11/4/2008
#1
您的第二份声明将永远无法达成。执行在 之后停止。return
javascript: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());
评论