position - Position Absolute的jQuery-Validation-Engine-表单字段的条件验证

标签 position conditional absolute jquery-validation-engine

我正在使用Position Absolute的表单验证引擎。

我有一个特定的验证案例,希望可以为我解决。我需要能够根据另一个字段的值来使一个字段成为必需。

例如:

If country.dropdown = "USA", then state.dropdown is required.  

要么
If country.dropdown <> 'USA" then state.dropdown is not required.

您认为使用JQuery验证引擎可以做到吗?如果是这样,您能指出我正确的方向吗?

最佳答案

首先,我必须说,我从未使用过Position Absolute的表单验证引擎,
但我对您的问题很感兴趣。
从文档(https://github.com/posabsolute/jQuery-Validation-Engine),您似乎必须创建一个自定义验证功能。

我在这里创建了一个工作提琴:http://jsfiddle.net/5pKjW/6/

即使它可行,我也不是完全满意,因为在第584行的验证引擎中,由于这种情况,需要“前哨值”。

// If the rules required is not added, an empty field is not validated
if(!required && field.val() == "" && !errorMsg) options.isError = false; 

这是带有自定义功能的select的标记:
<select class="validate[funcCall[checkCountry]]" type="text" name="state" id="state">
    <option value="none" ></option>
    <option value="CALIFORNIA" >CALIFORNIA</option>
    <option value="NEW ENGLAND" >NEW ENGLAND</option>
    <option value="TEXAS" >TEXAS</option>
</select>

这是验证器的初始化:
jQuery("#formID").validationEngine({
    'customFunctions': {
        'checkCountry': function (field, rules, i, options){
            if ($('#country').val() === 'USA' && field.val() === 'none') {
                return options.allrules.required.alertText;
            }
        }
    }
});

1)首先,您必须定义一个验证函数,该函数可以是全局的,也可以作为插件的参数传递的(如我上面所述)。定制函数接受以下输入:字段,规则,i,选项。
您没有对表格的引用,仅对当前字段有引用。
因此,如果要访问另一个字段,则必须像往常一样使用jQuery选择它(在示例中:$('#country'))。

2)检查确认条件。在此示例中,如果发生以下情况,它将失败:
$('#country').val() === 'USA' && field.val() === 'none'

如果不符合条件,则该函数必须返回String。在示例中,我在options.allrules.required中返回了标准消息。文档说明了如何为自定义功能定义自定义消息。

如您所见,由于
if(!required && field.val() == "" && !errorMsg) options.isError = false;

验证引擎中的第1行,开发人员被迫使if内部的条件失败,并且将所需条件设置为true或将错误消息设置为falsy值是不正确的。因此,唯一的方法是制作field.val() != ''
因此,标记中的第一个option元素具有前哨值none,而不是为空。这不是一个干净的解决方案,甚至可能无法轻松实现(我不知道您是否自己生成标记(如果不生成标记,事情会变得更加困难,您需要通过javascript来处理表单,验证引擎初始化之前))。

这不是一个干净的解决方案。
一个更好的解决方案是使用condRequired,如果它只接受一个自定义函数,而不是仅检查是否已填充其自变量之一。

关于position - Position Absolute的jQuery-Validation-Engine-表单字段的条件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11512328/

相关文章:

VIM:条件键映射

conditional - RequireJS 条件依赖

html - 文本未显示在 div 中

CSS - 位置 : absolute; Error

html - 拥有不同宽度页面的最佳方式

html - 将相对定位的父 div 的高度扩展到绝对定位的子 div 的高度

html - 如何使文本在一个跨度内向左增长?

css - 为什么 CSS 布局全尺寸和高度不使用绝对定位?

r - 以 R 中的元素数量为条件删除列表

css - 灯箱叠加位置绝对无法正常工作