Sti*_*ofu 8 jquery jquery-ui accordion javascript-events
我正在使用JQuery的手风琴模块编写表单向导.问题是我想覆盖手风琴菜单上的任何鼠标点击,以便在手风琴将显示下一部分之前首先验证表格.
我尝试过以下方法:
$('#accordion h3').unbind();
$('#accordion h3').click(function() {
if (validate())
{
$("#accordion").accordion('activate', 2);
}else
{
alert("invalid form");
}
}
Run Code Online (Sandbox Code Playgroud)
但上面的代码不起作用.无论表格是否有效,手风琴的内置点击事件仍会被调用,手风琴会显示下一部分.
我也尝试了以下代码:
$('#accordion h3').click(function(event) {
if (validate())
{
$("#accordion").accordion('activate', 2);
}else
{
alert("invalid form");
}
event.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)
但是stopPropagation()调用似乎根本不会影响手风琴的行为,无论表单是否有效,都会显示下一部分.
知道我可能做错了吗?
谢谢!
Sti*_*ofu 13
好吧,从编码这个功能中休息了一下,又用一双新鲜的眼睛回到了它.这是解决方案:
$("#accordion").accordion({event: false});
Run Code Online (Sandbox Code Playgroud)
为手风琴初始化代码添加event:false将阻止鼠标点击手风琴菜单执行默认操作,然后我可以编写自定义点击处理代码,以便在用户点击菜单时运行validate()函数,从根本上覆盖手风琴的内置-in如果表单未通过验证检查,则单击功能.
顺便说一句,我在这里使用JQuery UI的手风琴模块.
适用于ie7,8,chrome 19,ff 3.0.3