语义UI表单验证-仅当值不为空时才验证某些表单字段

卡尔·维堡

我有一个表单,其中包含必填字段,也是可选字段。我正在使用语义UI的表单验证行为来验证字段。

但是,我要实现的是,表单验证行为仅在可选字段中包含值时才对其进行验证。

一个可选字段示例:

<div class="field">
    <label>First name</label>
    <input type="text" name="first_name" placeholder="First name">
</div>

必填字段示例:

<div class="required field">
    <label>E-mail address</label>
    <input type="text" name="email" placeholder="E-mail address">
</div>

我通过省略empty验证规则进行了尝试,但这没有用。

表单验证行为中是否有内置的东西可以帮助我实现这一目标,或者我需要为可选字段编写自定义验证?

卡尔·维堡

更新:此功能已在1.2.0版中实现。optional可以使用相同的标志:https : //semantic-ui.com/behaviors/form.html#optional-fields

低于1.2.0版的语义的先前版本和解决方案:

通过扩展语义UI表单验证行为,我设法为可选字段制定了可行的解决方案。

首先,我optional向每个规则集添加了一个标志。这可以设置两种truefalse

firstname: {
    identifier: "first_name",
    optional: true,
    rules: [
        {
            type: "regex[^[a-zA-Z -]+$]",
            prompt: "First name can only consist of letters, spaces and dashes"
        }
    ]
}

然后,我搜索了处理每个字段验证的函数,并在其中添加了一条if语句来扩展它,以检查该optional标志是否设置为true且该值是否为空。如果条件为真,则跳过针对空白字段的验证,并返回为有效。

该函数可以在未压缩的4600ish行附近找到,semantic.js或搜索函数注释:

// takes a validation object and returns whether field passes validation
field: function(field) {
    var
        $field      = module.get.field(field.identifier),
        fieldValid  = true,
        fieldErrors = []
    ;

    if(field.optional && $.trim($field.val()) == ""){
        module.debug("Field is optional and empty. Skipping", field.identifier);
        return true;
    }
    if(field.rules !== undefined) {
        $.each(field.rules, function(index, rule) {
            if( module.has.field(field.identifier) && !( module.validate.rule(field, rule) ) ) {
                module.debug('Field is invalid', field.identifier, rule.type);
                fieldErrors.push(rule.prompt);
                fieldValid = false;
            }
        });
    }
    if(fieldValid) {
        module.remove.prompt(field, fieldErrors);
        $.proxy(settings.onValid, $field)();
    }
    else {
        formErrors = formErrors.concat(fieldErrors);
        module.add.prompt(field.identifier, fieldErrors);
        $.proxy(settings.onInvalid, $field)(fieldErrors);
        return false;
    }
    return true;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails错误表单字段验证CSS和语义UI

来自分类Dev

语义UI:如何防止验证失败时提交表单?

来自分类Dev

语义UI:如何防止验证失败时提交表单?

来自分类Dev

提交前先听语义UI表单验证错误

来自分类Dev

仅当表单字段具有值时,才进行更新的Rails验证

来自分类Dev

仅当每个输入都为空时才验证表单

来自分类Dev

仅当字段不为空时验证

来自分类Dev

语义Ui类UI表单破坏了Angular2验证

来自分类Dev

语义Ui类UI表单破坏了Angular2验证

来自分类Dev

CakePHP仅当几个必填字段不为空时才验证特定规则

来自分类Dev

语义UI和Meteor JS:在不更改页面的情况下验证表单

来自分类Dev

如何使用语义UI和Meteor提交实时验证的表单?

来自分类Dev

表单字段验证条件

来自分类Dev

在 office 结构 Ui 控件中单击按钮时验证表单字段

来自分类Dev

Angular Ionic-仅当特定字段为特定值时才验证表单

来自分类Dev

如何在语义UI中提交表单?

来自分类Dev

Codeigniter:在编辑时验证表单字段

来自分类Dev

按Tab时如何验证表单字段?

来自分类Dev

仅当对象字段不为null时,才可以验证该字段吗?

来自分类Dev

仅当对象字段不为null时,才可以验证该字段吗?

来自分类Dev

提交时删除某些表单字段

来自分类Dev

仅当数据库中没有信息时才显示表单字段

来自分类Dev

AngularJS:如何验证重复表单字段

来自分类Dev

AngularJS:防止隐藏的表单字段被验证

来自分类Dev

Django表单字段验证失败

来自分类Dev

symfony IBAN表单字段验证

来自分类Dev

AngularJS动态表单字段验证

来自分类Dev

PHP中的表单字段验证

来自分类Dev

MVC表单字段的验证消息的位置

Related 相关文章

热门标签

归档