首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有onclick()和onserverclick()的JQuery <button>。不可能吗?

带有onclick()和onserverclick()的JQuery <button>。不可能吗?
EN

Stack Overflow用户
提问于 2010-11-22 03:22:20
回答 2查看 2.9K关注 0票数 0

我有一个带有自己的JQuery验证的表单。单击JQuery <button id=btnRegister type=submit>时,将调用我的验证代码,如果无效,表单将不提交。一切都很好。

我在这个表格上还有一个<button id=btnSave>。我希望btnSave只在表单数据有效的情况下触发asp.net服务器端事件(onserverclick)。

我试过了- <button type=submit onclick='if($(this).closest('form').submit()==false) return;' onserverclick='btnSave_click' runat =server>Save</button>

单击btnSave时,它确实调用了表单的提交事件处理程序,如果无效,该处理程序将正确返回false。到目前一切尚好。在此之后,我希望onserverclick事件不触发。但是,onserverclick会触发页面,即使表单无效,页面也会回发。

在我看来,不能同时拥有onclick和onserverclick。我该怎么做才能使它们和谐共存?如果我将<button>更改为<input type=submit>,这一切都成功了。但我更喜欢<button>的外表和感觉。

EN

回答 2

Stack Overflow用户

发布于 2010-11-22 03:45:58

要防止回发,请确保您的JS函数返回false。我在上面的代码中看到了您对false的测试,但没有返回false。

代码语言:javascript
运行
复制
<button type=submit onclick='if($(this).closest('form').submit()==false) return false;' onserverclick='btnSave_click' runat =server>Save</button>
票数 1
EN

Stack Overflow用户

发布于 2010-11-23 09:00:13

多梅尼卡,但重点不在于此。在我的onclick代码中,如何获得表单提交处理程序的返回值(真或假)?var sts=myFunc(){return true/false;}将sts设置为true/false。但var sts = $(this).closest('form').submit()将sts设置为object,而不是true/false。因此,我不知道表单的提交处理程序是否会在单击按钮时返回true/false。我一定是在错误的轨道上,因为这似乎是按钮和单击按钮的基本用法。

我找到了解决办法。而不是做-

<button onclick='if($(this).closest('form').submit()==false) return false;'>我现在做了- <button onclick='if($.fn.validate()==false) return false;'

$(this).closest('form').submit()提交表单,并基于提交返回true或false的用户输入。但是,在onclick代码中,我仍然无法访问该返回值。所以问题依然存在。为了解决这个问题,我现在调用我的validate()函数,而不是在onclick中调用表单的提交处理程序。函数将true/false作为正常函数返回。如果为false,则我的onclick返回,否则将继续从__doPostback()函数到asp.net。

解决方法还有一个额外的优势--如果表单有效,我之前的尝试将提交该表单两次,一次是我自己对.submit()的调用,然后是通过__dopostback从asp.net提交。回想起来,我太天真了。学到的教训。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4241996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档