我正在尝试在我的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.jsfunction 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结构。
答案 0 :(得分:3)
首先要做的几件事:
Parsley允许您将其绑定到字段,因此如果没有表单元素(see docs),您就不会有问题;
classHandler
函数接收类型为ParsleyField
的对象。使用此对象,您可以使用el.$element
访问输入元素(例如:alert(el.$element.attr('id'));
我对您的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