何时调用服务器 onClick vs OnClientClick
when to call the Server onClick vs OnClientClick
有人可以解释为什么点击btnSaveFile1,调用onClientClick(),如果onClientClick()返回true,它调用服务器,但如果onClientClick()返回false,它不会调用服务器。 我完全理解。
但是为什么btnSaveFile2不是这种情况,无论onClientClick()返回什么,它似乎都不会调用服务器?
为什么返回 false; 必须是内联的?
<asp:Button ID="btnSaveFile1" runat="server" Text="Save" OnClientClick="if(!onClientClick()){return false;}" OnClick="btnSaveFile_Click" UseSubmitBehavior="false" />
<asp:Button ID="btnSaveFile2" runat="server" Text="Save" OnClientClick="return onClientClick()" OnClick="btnSaveFile_Click" UseSubmitBehavior="false" />
<script type="text/javascript">
function onClientClick() {
if (CurrentMemberValidatedWindow()) {
if (!ValidateForm()) {
return false;
}
}
else {
DeleteInvalidFiles();
return false;
}
return true;
}
</script>
TL;DR:删除UseSubmitBehavior="false"
更长的解释:
使用 UseSubmitBehavior 属性指定按钮控件是否 使用客户端浏览器的提交机制或 ASP.NET 回发 机制。默认情况下,此属性的值为 true,导致 用于使用浏览器提交机制的按钮控件。如果指定 False,ASP.NET 页面框架将客户端脚本添加到页面 将表单发布到服务器。
如果您查看页面源代码,则呈现按钮的onclick
不仅仅是"if(!onClientClick()){return false;}"
或"return onClientClick();"
,因为它必须添加客户端脚本来发布表单。所以现在第一个按钮是:
"if(!onClientClick()){return false;};__doPostBack('ctl00$MainContent$btnSaveFile1','')"
第二个是
"return onClientClick();__doPostBack('ctl00$MainContent$btnSaveFile2','')"
所以你可以看到在案例#2中,如果它返回true
,它将不会到达实际提交表单的脚本。(按钮 1 不是这种情况,它确实到达脚本并因此提交表单)。
相关文章:
- setInteval vs setTimeout
- $(this).prop('property') vs. this.property
- Js.erb VS按钮标记-不'不起作用.为什么?
- reactjs this.refs vs document.getElementById
- Performance: NaCl vs Emscripten
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- Advantages to DOMParser vs template & innerHTML
- JavaScript-===vs===运算符性能
- 开发第三方小部件-Angular vs jQuery vs普通的旧JS
- PhantomJS(vs nightwatch.js)设置cookie错误
- Javascript events: window.event vs argument reference (funct
- 需要确认我对Servlet vs RESTful网页的理解's的差异
- "#"keyCode=222 vs 51(Chrome与Android版Chrome)-为什么有区别
- .notion vs.[]notation |插入到文本对象中
- Javascript-使用“”将toDateStringMonth从文本字符串解析为数字字符串;如果“;vs“;开关”;
- 没有框架/DLL的VS Web应用程序项目
- Eval vs execscript
- VS代码:在<脚本>标签
- Object.prototype.hasOwnProperty.call() vs Object.prototype.h
- 何时调用服务器 onClick vs OnClientClick