ASP.NET LinkButton / ImageButton和JQuery Validate?

14
我们正在将 JQuery 引入现有的 ASP.NET 应用程序,并使用 JQuery 的验证插件 进行客户端验证(我们不想使用 asp.net 验证器)。
对于 asp:Button 控件,一切都很好。在提交页面之前,会触发客户端验证。
但是,当使用 LinkButtonImageButton 控件时,在未验证表单的情况下提交页面。
这是由于 validate 与呈现为 Input type="submit" 的按钮一起工作,而 ImageButton 呈现为 Input type="image"
还有其他人遇到过这个问题吗?
感谢您提供解决方案和信息。

更新:

非常感谢,你们的答案帮助我们识别了问题。结果发现 JQuery 的验证插件存在一个错误。我们使用了一个补丁来避免隐藏输入字段的验证,该补丁使用了parents().filter(":hidden")。这在 JQuery 1.3.2 中无法正常工作。我们将其替换为 .is(":visible")。现在 asp.net ImageButton 默认可以使用了!

更新2:

LinkButton 仍然无法正常工作。简单的解决方法是添加一个点击函数,如果表单无效,则返回 false:
$("#<%= tb.ClientID %>").click(function() {
            return $('form').valid();
        })

据我所知,最新版本(截至AFAIK 1.5.2)已经修复了这个问题。至少ImageButtons可以与验证插件一起使用。 - Ted
+1 非常感谢。我昨天开始就一直在努力做这个,浪费了一整天时间,现在才找到方法。 - IsmailS
顺便提一下,我使用类名来避免 .net 客户端 ID 问题。这也让您的脚本在任何页面上都能工作,只需使用链接按钮上的类名即可。 - goodeye
更新2应该被标记为答案!这正是我所需要的,谢谢! - Crushermike
2个回答

3
第一个建议仍然可行,因为您可以在验证后使用Javascript引发postback。
Javascript代码如下:
__doPostBack('<%= YourImageControl.UniqueID %>','');

第二个空参数可以用于传递参数。

0

不确定这是否有帮助,但试一试吧...

http://docs.jquery.com/Plugins/Validation/validate#options

$("input[type=image]").click(function() {
   $($(this).parents(form)).validate();
});

你可能需要用更具体的内容替换“form”,但我尽可能准确地描述了它,尽管不知道页面的布局。如果这有帮助,请回复!

谢谢你的回答! 这样做不行,因为我们用 JQuery 添加的 OnClick 函数会替换 ASP.NET 渲染的 onclick。表单不会带上 ASP.NET 所需的选项来连接服务器端 ImageButton 点击事件的 postback。 但这是一个开始 :-) - PeterFromCologne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接