parsley 2.0.3不使用bootstrap 3

时间:2014-07-26 18:51:29

标签: javascript sharepoint-2010 twitter-bootstrap-3 parsley.js content-editor

我正在尝试在我的html页面上使用parsely.js来验证输入框。目前这个html页面包含一个输入框和一个提交按钮。结构是使用bootstrap 3创建的,此页面不包含 Form 标记。

<div role='form'>
    <div class="row form-group">
        <div class="col-xs-3">
            <label title="fullname">Full Name</label>
        </div>
        <div class="col-xs-4">
            <input type="text" class='form-control' id="name" name="fullName" data-parsley-required="true" data-parsley-required-message="Please insert your name"/>
        </div>
    </div>

  <input type="submit"  class= "btn btn-danger"/> </div>

我正在调用像

这样的parsley.js
function validateInput()
        {

        var handle = $("input[name='fullName']").parsley({
            successClass: "has-success",
            errorClass: "has-error",
            classHandler: function (el) {
              return $(el).closest('.form-group');//not working

            },
            errorsWrapper: "<span class='help-block'></span>",
            errorTemplate: "<span></span>",

        });

        return handle.isValid();
    }

点击“提交”按钮。它正确返回true / false并创建span标记。但不应用错误类。甚至是data-parsley-required-message&#39;请输入你的姓名&#39;没有用。

当我发出警报($(el))或警报(el)时,它会给出[object Object]。我认为el应该是我调用parsley函数的输入对象。但我无法获得el.attr(&#39; id&#39;)或任何其他属性。它返回undefined。我也试过了

//return el.closest('.form-group');//not working
//return el.$element.closest('.form-group)//not working
//return $(el).$element.closest('.form-group')//not working

我无法使用Form标签,因为我在sharepoint content edtior web part中使用了这个html结构。

1 个答案:

答案 0 :(得分:3)

首先要做的几件事:

  1. Parsley允许您将其绑定到字段,因此如果没有表单元素(see docs),您就不会有问题;

  2. classHandler函数接收类型为ParsleyField的对象。使用此对象,您可以使用el.$element访问输入元素(例如:alert(el.$element.attr('id'));

  3. 我对您的validateInput功能进行了以下更改:

    <script type="text/javascript">
        function validateInput() {
            $("input[name='fullName']").parsley({
                successClass: "has-success",
                errorClass: "has-error",
                classHandler: function (el) {
                    return el.$element.closest('.form-group'); //working
                },
                errorsWrapper: "<span class='help-block'></span>",
                errorTemplate: "<span></span>",
            });
    
            // Returns true / false if the field has been validated. Does not affect UI.
            //$("input[name='fullName']").parsley().isValid());
    
            // validate field and affects UI
            $("input[name='fullName']").parsley().validate();
        }
    </script>
    

    使用此代码,消息将正确显示,并且successClass和errorClass将附加到div form-group

    请参阅以下working jsfiddle