我正在使用带有多部分表单的jQuery Accordion UI(带有验证和表单插件)。每个表单都有一个常规提交按钮和一个编辑按钮。如果该部分完成,编辑按钮将触发当前打开部分的提交,或者如果尚未完成则关闭该活动部分。然后手风琴将打开到单击编辑按钮的部分。
例如,用户填写第1部分,然后点击“继续”。填写第2部分时,用户意识到他或她犯了错误并点击了第1部分中的编辑按钮。第2部分已关闭,第1部分重新打开进行编辑。我想知道哪个索引包含触发第2部分关闭的编辑按钮(在这个例子中它是与第一部分关联的索引)。
我无法弄清楚如何确定单击编辑按钮的哪个部分(索引)。当我在submitHandler中使用以下代码时,我没有得到正确的索引。
var acc = $("#accordion"),
index = acc.accordion('option','active'),
index_origin = $(".edit").index(this);
alert(index_origin);
有什么建议吗?
我提前为笨拙的代码道歉 - 我是新手。
更新:下面,根据评论的要求,这里是手风琴第一部分的HTML。
<h3 id="section1"><a href="#" class="">Applicant Information</a><button id="edit-applicant-button" class="edit" value="edit" name="edit">Edit Applicant information</button></h3>
<div id="applicant-information" class="step">
<form id="applicant-form" class="registration-form" name="applicant-form" method="post" action="">
<fieldset id="clientInfo">
. . .
</div>
<div class="step-action">
<p>
<span class="next-step">
<button id="submit-first" class="submit" type="submit" value="next" name="next"><em>Next</em></button>
</span>
</p>
</div><
</fieldset>
</form>
</div>
答案 0 :(得分:1)
错误是按钮的实际类别为"edit"
,而不是"editButton"
。所以你必须在html中更改它,或者将你的javascript更改为:
index_origin = $("#accordion .edit").index(this);
将#accordion
添加到选择器不是强制性的,但可以让您拥有一个或多个手风琴。
修改即可。根据您提供的额外信息,解决方案将是:
$("#accordion .edit").click(function(){
window.lastButtonClicked = this; //Store clicked button in a global var.
});
...
submitHandler: function(){
var index_origin = $("#accordion .edit").index(window.lastButtonClicked );
}
答案 1 :(得分:0)
手风琴中的选定部分提供活动课程。您找到具有活动类
的h
标记
$('#acordion h').hasclass('active').index()