【发布时间】:2013-10-25 13:28:47
【问题描述】:
我有一个需要自定义验证的表单(引导选择不能很好地与 JQuery.validate 配合使用)。这种形式的主要规则是不能不选择任何下拉菜单。我推断当我选择一个下拉项时,我的下拉 div 的 class 属性会收到一个 select2-container-active 后缀,这使我能够编写自定义 JQuery 选择器:
function validateSelect(id) {
var result = {
valid: $(id).hasClass("select2-container-active"),
element: id
}
return result;
}
这会获取每个有效的(选定的)下拉菜单,这使我能够确定是否有任何无效的下拉菜单。问题是当我点击提交按钮时,在我有机会调用validateSelect 方法之前,后缀会从class 属性中删除。它被调用,但找不到后缀,因此“认为”没有选择下拉项目,即使我在每个下拉菜单中都选择了一个项目。
如何防止按钮在提交(点击)时删除此后缀?
编辑: 这是其中一个下拉菜单的 HTML:
<div class="control-group">
<label class="control-label" for="selectInsert02">City:</label>
<div class="controls">
<select name="citiesSelect" id="selectInsert02" class="input-xlarge with-search" data-bind="foreach: certificationModel.citiesList" required>
<option data-bind="text: Name, value: CityID"></option>
</select>
</div>
</div>
【问题讨论】:
-
您发布的代码不应删除任何类。引导程序是否将该类添加到下拉列表中?如果它是自动的,那么它似乎是在该特定容器处于活动状态时添加的东西,因此当您单击它远离它时,该类被删除。您可以通过查看调试器中的元素选项卡来验证这一点。点击下拉菜单,它应该得到那个类。点击离开,班级应该离开。您可以提供用于创建下拉菜单的 HTML/javascript 吗?我们或许可以提出另一种解决方法。
-
你是对的。即使我单击表单中的空白区域,类后缀也会被删除。这可能与引导相关。我将粘贴代码。请待命。
-
在我看来,你有 2 个选项:一个:创建一个默认选项,它不是像“--select--”这样的有效选项,验证该选项没有被选中。二:创建一个“onclick”处理程序来验证是否设置了正确的选项,然后分配一个类似“selected”的类来检查(在该处理程序中,如果“selected”类存在但正确的选项不存在,则应该删除它) t 选择)
-
@Snowburnt 谢谢,我会尝试类似选项 2 的方法。
标签: jquery html validation twitter-bootstrap drop-down-menu