【发布时间】:2013-01-15 21:22:56
【问题描述】:
我在表单中有几组最小值和最大值字段,用户可以通过填写最小值和最大值来指定范围。我正在使用 jQuery 的 Validate 插件进行表单验证。我想设置一个验证规则,强制最大字段大于最小值。每当更改最大 或 最小字段值时,都会调用此方法。
我知道我可以像这样设置某种基本的自定义验证方法:
$.validator.addMethod("greaterThan",
function(value, max, min){
return parseInt(value) > parseInt($(min).val());
}, "Max must be greater than min"
);
然后为最大元素添加一条规则:
rules: {
maxTruck: {greaterThan: '#minTruck'}
}
但这有点复杂,因为这仅适用于更改 max 字段时,而不是 min。有什么简单的方法可以做到这一点,而不必编写 lessThan 方法并将其应用于 min 字段?
然后我想解决的另一件事 - 有没有什么简单的方法可以通用地应用它,而不必枚举每个最大字段以及它映射到哪个最小值?这样我就可以有一个 min 和 max 类并调用类似:
$(".max").rules('add', { greaterThan: ".min" });
并且以某种方式设置了能够确定(可能基于共享属性?)max字段与哪个最小值配对的方法?
更新:
我在这篇文章中提到的基本逻辑可以在this jsfiddle 中看到。但是,我并没有真正做这么多 - 我正在寻找一种逻辑,以按照我描述的方式基本上链接最小和最大字段集。而且我不知道这是否是最好的方法 - 正如我所提到的,我希望能够通用地做到这一点,这样我就不必通过 id 来引用 min 和 max 字段。
【问题讨论】:
-
我认为如果你能提供一个 fiddle 将是一个很好的开始?!
-
请大大澄清这个问题。一开始你说,“每当改变最大或最小字段值时调用”。但后来你说,“仅在更改最大字段时适用”。它是哪一个?验证发生在
keyup和focusout事件上,因此无需担心“何时更改”。 -
除了 jsFiddle,请在问题中发布您的 HTML。您已经拥有足够的声誉来了解这一点。我想帮助你,但仍然缺少太多。
-
@Sparky - 我希望在更改最小或最大字段时应用验证逻辑的行为,但我提供的代码仅在更改最大字段时适用。
-
这听起来可能比实际上更复杂......再次,为我们提供一个简洁的例子。如果我回答这个问题,我可以毫无问题地构建一个 jsFiddle 演示来配合它。您至少可以提供表单的 HTML。