在jquery验证中编号动态列表

时间:2016-10-04 15:15:40

标签: javascript jquery validation

我试图让顶部列表以数字形式显示可见列表项。

要做到这一点,我试图说......继续&#34;继续&#34;单击,找到可见列表项并将其包装在<li></li>

$('.btn-submit-val').on('click', function() {
    $('.error-menu a > label:visible').wrap('<li></li>');
    $('.error-menu a > label:hidden').unwrap('<li></li>');
});

所以如果你有这样的清单:

<ol class="error-message-container error-menu">
  <a href="#firstName"><label class="error" for="firstName" generated="true" style="display:none;"></label></a>
  <a href="#lastName"><label class="error" for="lastName" generated="true"></label></a>
</ol>

然后页面会显示:

1. [last name error]

WON&#39; T显示:

1. 2. [last name error]

所以基本上,如果错误不存在,它就不会在页面上显示,也不会出现在数字列表顺序中。

如果您当前在页面上验证字段,则该数字仍会显示在其旁边。我希望删除数字并保留数字顺序。这可能吗?

小提琴:https://jsfiddle.net/DTcHh/25848/

1 个答案:

答案 0 :(得分:0)

你的问题源于此:

$('.error-menu a > label:hidden').unwrap('<li></li>');

元素未被打开的地方。这在某种程度上可能更好,因为您希望保留商品的订单。

如果在验证表单字段后隐藏整个元素,则可以轻松解决问题。

现在为什么你的元素没有被解开,我建议你阅读the difference between visibility:hidden and display:none,因为你使用display:none隐藏你的元素但是检查可见性:hidden。

我建议将<li></li>添加到您的标记中,并以更改标签可见性的方式更改其可见性。这样就不需要包装/解包元素了。相反,您可以只使用2个css类:.hide{display:none}.show{display:block;}并通过您已在代码的一部分中使用的.addClass()/.removeClass()添加它们。

我希望这会有所帮助。