Parsley.js可以在没有表单元素的情况下工作吗?

时间:2014-02-19 14:51:35

标签: validation parsley.js

<form id="f">
    <div class="form-group">
        <label for="exampleInputEmail1">Email address</label>
        <input parsley-type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email" parsley-trigger="keyup">
    </div>
 </form>
<script>
    $(function(){
        $('#f').parsley('validate');
    });
</script>

而不是表单元素我想验证div元素中的内容,是否可能?

3 个答案:

答案 0 :(得分:5)

Parsley无法验证div / span元素内的文本。但是,您可以完美地验证不在表单标记内的输入,在您的示例中,您可以执行$('#exampleInputEmail1').parsley('validate');

答案 1 :(得分:3)

我已经能够(ab)使用优秀的Parsley验证器来处理非输入元素,

var inputField = $J('<input id="someRandomID" type="text" data-parsley-type="alphanum" data-parsley-required="true" >');
var parsleyHandle = inputField.parsley();
inputField.val('wronginput!@#!#!@#');
console.log(parsleyHandle.isValid()); // should be false

inputField.val('correctinput');
console.log(parsleyHandle.isValid()); // should be true

显然,价值的来源可以是任何东西 - div,span等。

祝你好运

答案 2 :(得分:2)

我有类似的问题。在SharePoint 2013中(至少在Visual Web部件中)直接在标记中添加表单会导致悲伤。 SP将形成&#39;它通过添加一个巨大的生成标记blob并改变外观和感觉。虽然可能有办法解决 问题,但我想快速将Parsley添加到具有许多输入的表中,而不会使用SP生成的表单。我的解决方案是在呈现UI之后使用jQuery $ .wrap()。奇迹般有效。是的,它仍然使用表单元素,但也许您出于类似的原因避免使用表单。 试试这个JSFiddle

<div id='container'>
  <button type="button" id="save">Save</button>
  <table>
    <tr>
        <td><input type='number' min='0' max='999' /></td>
        ... many more inputs
   </tr>
   ...
  </table>
</div>
<script ... >
$(document).ready(function(){

     $("#container").wrap("<form id='fooForm'></form>");

     var options = {
         uiEnabled: true,
         errorsWrapper: '',
         excluded: '.inActive'
     };

     // create the validator
     $("#fooForm").parsley(options);

     // wire up click event for the save button
     $("#save").click(function () {

         // react to form valid state
         // calling parsley again only returns the
         // ref to the original, does not duplicate
         var validator = $("#fooForm").parsley();

         validator.validate();

         // handle validator.isValid();           
         // ajax form post or other

     });
});

</script>