【问题标题】:Jquery bootstrap select2 plugin issue with validate plugin带有验证插件的Jquery bootstrap select2插件问题
【发布时间】:2014-12-02 13:08:44
【问题描述】:

在我的引导项目中,我尝试使用插件 select2,但我意识到 如果您使用此插件,则不再能够使用验证插件验证我的表单中的选择字段。 我会避免使用商业插件引导验证器..

<div class="container">
<div class="row">
    <form id="test_form" action="?">
        <div class="col-md-3">
            <div class="form-group">
                <label for="name">Foo</label>
                 <select class="form-control" id="foo" name="foo">
                     <option value=""></option>
                     <option value="1">1</option>
                     <option value="2">2</option>
                 </select>
            </div>
        </div>
        <div class="col-md-3">
            <div class="form-group">
                <label for="name">Bar</label>
                <select class="form-control" id="bar" name="bar">
                    <option value=""></option>
                    <option value="1">1</option>
                    <option value="2">2</option>
                </select>
            </div>
        </div>
        <div class="col-md-1">
            <button type="submit" class="btn btn-primary">VALIDATE</button>
        </div>
    </form>
</div>
</div>

JS

/* select 2 plugin */
$('select#foo').select2();

/* Validation */
$("#test_form").validate({
    rules:
    {
        foo: { required: true },
        bar: { required: true }
    },
    errorPlacement: function (error, element) {
        $(element).addClass('err');
    },
    success: function (label, element) {
        $(element).removeClass('err');
    },
    submitHandler: function(form) {
        alert("validation ok");
    }
});

在您看来,我该如何解决这个问题?谢谢

MY DEMO

【问题讨论】:

  • 为了获得最佳实践,您应该只添加/删除带有 highlightunhighlight 的类,而不是 errorPlacementsuccess... 这不是他们的预期目的。跨度>
  • @Sparky - 我为重复道歉,我没有找到你的答案,这就是我想要的..

标签: jquery twitter-bootstrap jquery-validate jquery-select2


【解决方案1】:

好的。这对我有用

/* select 2 plugin */
$('select#foo').select2();

/* Validation */
    $("#test_form").validate({
        ignore: 'input[type=hidden]',
        rules:
        {
            foo: { required: true },
            bar: { required: true }
        },
        errorPlacement: function (error, element) {
            $(element).parent().addClass('has-error');
        },
        success: function (label, element) {
            $(element).parent().removeClass('has-error');
        },
        submitHandler: function(form) {
            alert("validation ok");
        }
    });

我添加了一个“忽略:'input[type=hidden]'”选项,因为 Select2 脚本向原始输入添加了一个隐藏选项,而 Jquery Validator 似乎忽略了它。然后我将元素上的错误类从“err”更改为父元素上的“has-error”(带有表单组类的div)

【讨论】:

  • 你救救我!!非常感谢!!
  • ignore: 'input[type=hidden]' 表示只忽略input type="hidden" 元素,而不是默认忽略所有隐藏元素。您可以使用ignore: [] 指定忽略隐藏的nothing,这也可以。否则,您可以指定忽略所有除了隐藏的select 元素。
  • 我不是专业开发人员.. 我只知道它有效 :D 感谢您的解释 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
相关资源
最近更新 更多