我在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 :(得分:2)
return
将控制权返回给所谓的代码。因此,任何返回陈述后的内容
return prepareSave(); return prepareSearch();
// ^^^^^^^^^^^^^^^^^^^^^^^ e.g. this part
永远不会执行。试试return (prepareSave() && prepareSearch());
答案 1 :(得分:0)
永远不会达到您的第二个return
声明。执行在javascript:return prepareSave()
之后停止。
如果两个函数都返回true,则看起来要返回true - 因此,请执行:
btnSearch.Attributes["OnClick"] = javascript: return prepareSave() && prepareSearch();
答案 2 :(得分:0)
那是因为返回阻止了第二次验证的运行。试试这个
btnSearch.Attributes["OnClick"] = "javascript:return prepareSave() && prepareSearch();"
答案 3 :(得分:0)
"javascript:return prepareSave(); return prepareSearch();"
1)你不应该有“javascript:”
2)永远不会执行return prepareSearch();
,因为"return prepareSave();
会退出您的事件处理程序
尝试"return (prepareSave() && prepareSearch());"