3
|
Aaron · 技术社区 · 16 年前 |
![]() |
1
1
我建议查看SubmitHandler和InvalidHandler选项。一个或另一个应该为你想要的工作。我认为,最好的方法是在默认情况下允许回发,并在invalidHandler中将cancelPostback设置为true。或者,您可以编写自己的SubmitHandler,直接调用uDoPostback并通过ImageButton替换提交内容。 |
![]() |
2
3
我对您的解决方案有问题,因为除了IE之外,所有浏览器都在jquery验证器的submitHandler()函数之前启动了“oneachRequest”函数。我想出了一个更优雅的解决方案,如果验证失败,只需取消回发,而不依赖于预设变量。
|
![]() |
3
1
感谢Heaps Tvanfosson及时提供帮助。 OK更新: 我跟踪了越来越多的链接,最终找到了“成功”的文档。插件主页上的文档很糟糕,忽略了许多关键功能:)但是在官方jquery页面上,它的“更好”。“成功”选项意味着每次成功验证单个字段时都会触发。所以这是按设计工作的,我错误地假设它只会在整个表单有效时触发。 我试过你的无效处理方法。我喜欢这个主意。我遇到的一个问题是,ImageButton的回发仍然会首先触发,因此它会在InvalidHandler代码运行之前开始回发。所以回发仍将继续进行,然后,invalidHandler将禁用未来的回发,不幸的是,它们以错误的顺序触发。但除此之外,它还显示出其他一切迹象表明它是完美的解决方案。 然后我用另一种方法去尝试服从者的方法,即相反的方法。再次,这遭受了一些订单问题,因为回发会再次被触发,但被阻止,然后提交者会允许以后回发,但已经太晚了,所以这个回发被错过了。你得再按两次按钮才能启动。 所以最后一个半蹩脚的解决方案是: 我把这行改为: //将客户端验证附加到主窗体 $(“<%=form1.clientID%>”).validate(submithandler:function()preventPostback=false;uuDoPostback('updatepanel1','';”); 如您所见,首先切换preventpostback变量,然后手动触发一个新的postback,因为第一个postback可能已经被阻止并关闭。因此,本手册的dopostback调用确保了新的回发会按照preventpostback的新值被触发。 我从ImageButtons后面删除了事件方法,并在服务器端代码中创建了一个名为“doPostBackLogic()”的新方法,该方法仅在回发页面时调用,我知道这一定是来自此验证逻辑,因为这是在我的窗体上唯一可能发生的回发。然后所有的隐藏/显示/保存逻辑都会在这里为我发生。这意味着当我手动调用uuDoPostback时,我只需使用更新面板的ID,而不用担心模仿特定的ImageButton等。 这样它就完美地工作了。默认情况下禁用回发,当表单有效时,允许回发,但随后手动触发回发,以使新值生效。 所以这基本上是您的第二个解决方案,再次感谢您的聆听和分享!:) |
|
user6658617 · 异步回发后更改控件位置 9 年前 |
![]() |
Bhav · UpdatePanel中未更新RadioButtonList 11 年前 |
![]() |
Huzaifa · RadAjaxManager无法在asp.net中使用面板 12 年前 |
![]() |
RacerNerd · UpdatePanel计时器触发器不工作 12 年前 |
![]() |
viv_acious · 动态控件回发更新面板 12 年前 |