我只想在Web用户控件中添加一些客户端(JQuery Javascript)验证。我放了一个OnClientClick处理程序,然后调用该函数。但是,即使我返回“false”,OnClick方法也会被触发。我做错了什么?
我使用VS 2010,使用JQuery 1.4.2定位4.0框架。和JQuery UI 1.8.4。
以下是示例代码:
<td style="text-align:right"><asp:Button ID="btnAddSave" OnClientClick="return ValidateMail();" OnClick="btnAddSave_Click" runat="server" Text="Submit" /></td>
脚本方法:
function ValidateMail() {
alert("Bouton clicked");
return false;
}
如果我在Page_Load事件中放置断点,我会看到我进入并且还执行了btnAddSave_Click事件。
答案 0 :(得分:11)
由于某种原因,虽然我没有附加任何jquery事件处理程序,但它不起作用。
实际工作的是:
OnClientClick="if (validate_form() == false) return(false);"
答案 1 :(得分:6)
您是否有一个返回true
的点击事件处理程序(通过jquery注册)?在这种情况下,忽略OnClientClick
的返回值。
查看我的问题(和答案):Why doesn't returning false from OnClientClick cancel the postback
答案 2 :(得分:3)
尝试将其更改为
OnClientClick="ValidateMail(); return false;"
答案 3 :(得分:3)
很棒的答案。我是这样做的。相同的结果 - 如果从Java函数返回false,则不会触发OnClick事件。
OnClientClick = "if (!ValidateDelete()) return false;"
OnClick="btnDeleteSupplier_Click"
答案 4 :(得分:1)
这对我很有效:
OnClientClick="javascript:SubmitTableData(); return CanSubmit();"
设置返回值并通过第一个函数调用提交:
function CanSubmit() {
return submit;
}
希望这对某人有帮助。
答案 5 :(得分:0)
我之所以写这个答案只是因为我在ASP.NET WebForms中使用html按钮而我找不到解决方案为什么我应该用工作示例替换我的代码片段。这是解决它无法正常工作的原因。希望它能帮助你理解检查它对我有帮助的问题。这是我的第一篇文章,对于风格很抱歉。
<button type="button" id="buttonAddOrEdit" class="btn btn-success" runat="server" onclick="return myValidate()" onserverclick="buttonAddOrEdit_ServerClick">Zapisz</button>
和javascript功能:
function myValidation() {
if (validator.form()) {
//Project logic
return true;
}
else return false;
};
在正确验证后使用客户端单击并未在绑定到按钮的服务器端触发事件。提到的解决方案是将代码更改为:
onclick =&#34; if(!myValidation())返回;&#34;
因为创建了onserverclick在页面上呈现的html的方式而起作用。 onserverclick on html按钮正在被javascript中的__doPostBack方法取代。在客户端呈现的html按钮的完整代码看起来就是这样:
<button onclick="return myValidation(); __doPostBack('ctl00$PortalContent$buttonAddOrEdit','')" id="ctl00_PortalContent_buttonAddOrEdit" type="button" class="btn btn-success">Zapisz</button> Błąd składni
用if statment替换后。
<button onclick="if(!myValidation()) return; __doPostBack('ctl00$PortalContent$buttonAddOrEdit','')" id="ctl00_PortalContent_buttonAddOrEdit" type="button" class="btn btn-success">Zapisz</button>
使用return myValidate();赢得了tirgger事件,因为它在__doPostBack之前返回。
以下代码允许您在必要时添加其他代码到按钮,并且不会导致任何问题。
答案 6 :(得分:0)
只需添加javascript:
示例:
javascript:return ValidateMail();