javascript - 通过不显眼的验证以 asp.net mvc 形式动态添加 bootstraph glyphicon

标签 javascript jquery html css twitter-bootstrap

我有以下 javascript,它根据 bootstrap 成功地放置了红色边框和绿色边框

请检查带有 - 的行(与此问题相关的行)

(function ($) {
    var defaultOptions = {
        errorClass: 'has-error',
        validClass: 'has-success',
        validIcon: 'glyphicon glyphicon-ok form-control-feedback',
        invalidIcon: 'glyphicon glyphicon-remove form-control-feedback',
        highlight: function (element, errorClass, validClass, validIcon, invalidIcon) {
            $(element).closest(".form-group")
            .addClass(errorClass)
            .removeClass(validClass);
            debugger;
            -$(element).next()
            -.addClass(invalidIcon)
            -.removeClass(validIcon);
        },
        unhighlight: function (element, errorClass, validClass, validIcon, invalidIcon) {
            $(element).closest(".form-group")
            .removeClass(errorClass)
            .addClass(validClass);
            debugger;
            -$(element).next()
            --.removeClass(invalidIcon)
            --.addClass(validIcon);
        }
    };

    $.validator.setDefaults(defaultOptions);

    $.validator.unobtrusive.options = {
        errorClass: defaultOptions.errorClass,
        validClass: defaultOptions.validClass,
    };
})(jQuery);

Razor View 是这样的:

<div class="form-group">

            @Html.LabelFor(model => model.FechaHasta, new { @class = "col-sm-2 control-label" })
            <div class="col-sm-10">
                @Html.EditorFor(model => model.FechaHasta, new { htmlAttributes = new { @class = "form-control" } })
                <span class="icon" aria-hidden="true"></span>
                <div class="help-block">
                    @Html.ValidationMessageFor(model => model.FechaHasta)
                </div>
            </div>

        </div>

截图

问题:我如何动态地添加字形,以便根据 boostrapframework,当一个字段有效时它显示绿色勾号,当它无效时它显示红色叉号。

http://screencast.com/t/Oat8DvZnsy

它应该像这样显示: http://screencast.com/t/irp2fafnGx

http://getbootstrap.com/css/#forms

最佳答案

将您的 HTML 更改为

<div class="form-group has-feedback">
    @Html.LabelFor(model => model.FechaHasta, new { @class = "col-sm-2 control-label" })
    <div class="col-sm-10">
        @Html.EditorFor(model => model.FechaHasta, new { htmlAttributes = new { @class = "form-control" } })
        <span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
        <span class="glyphicon glyphicon-warning-sign form-control-feedback" aria-hidden="true"></span>
        <span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span>
        <div class="help-block">
            @Html.ValidationMessageFor(model => model.FechaHasta)
        </div>
    </div>
</div>

然后像这样添加CSS

.form-group.has-feedback > .form-control-feedback {
    display: none;
}
.form-group.has-success.has-feedback > .form-control-feedback.glyphicon-ok {
    display: block;
}
.form-group.has-warning.has-feedback > .form-control-feedback.glyphicon-warning-sign {
    display: block;
}
.form-group.has-error.has-feedback > .form-control-feedback.glyphicon-remove {
    display: block;
}

您可能需要稍微尝试一下 HTML - 我不确定 .icon 是否适用,因此我删除了它。另外,不确定 .help-block 的样式是什么。

无论如何,将类 .has-warning、.has-error 或 .has-success 添加到表单组(通过您的验证脚本)会显示相应的图标。

关于javascript - 通过不显眼的验证以 asp.net mvc 形式动态添加 bootstraph glyphicon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29959115/

相关文章:

javascript - 如何设置 Kendo 文本框的值并将该值传递给 Controller ​​以使模型有效?

javascript - jquery 按钮启用如果复选框和选择选项

javascript - 在 Angular 中,仅当未禁用时才需要一个字段

html - 显示 div 背景图像完成

Javascript框架流行度

javascript - 如何不在 <div> 上应用 CSS 文件? (不更改原始 CSS 文件。)

javascript - 使用 jQuery addClass 更改主体 CSS

jQuery : Select last visible direct child

jquery - 如何不使用内置搜索/过滤框来过滤 jqGrid 数据

javascript - 无序列表中的列表项仅在 Internet Explorer 中重叠,在所有其他浏览器中一切正常