在 jQuery UI 对话框中调用 Parsley.js 时没有出现错误消息?

Error messages not appearing while Parsley.js is called in a form living inside a jQuery UI dialog?

我在 q jQuery UI 模态中有一个表单,并且 Parsley.js 无法正常工作,因为验证消息未显示在 UI 上。

这是我一直在玩的代码:

$(function() {
  $('#order_push').click(function() {
    $('#add_contact').dialog('open');
  });

  $('#add_contact').dialog({
    title: "Add Contact",
    autoOpen: false,
    modal: true,
    width: 600,
    height: 300,
    buttons: {
      'Create': function() {
        var $form = $('#contact_frm').parsley();

        if ($form.isValid()) {
          alert('valid');
        }
      }
    }
  });
});

here is a full example of the HTML and the JS working together. If you play a little bit with this Fiddle by leaving the fields empty you'll see how messages are not displayed. At least I would like my field to be marked in red if it's invalid or green if it's valid. Something like this

我是不是漏掉了什么?

您正在呼叫 isValid。文档状态(粗体!):

isValid: Does not affect UI nor fires events.

您想调用 validate({force: true})(如果进行异步验证,则调用 whenValidate

运行 对 Marc-André 的回答,应该被接受,因为它解决了主要问题...

关于评论中的第二个问题

只需添加这个,它针对 Parsley 错误消息元素:

if($form.on('form:error')){
  $(".parsley-errors-list").prev().addClass("error");
}

还有这个CSS:

.error{
  border:2px solid red;
}

现在要删除 keyup 上的错误 class:

$("input").on("keyup",function(){
  $(this).removeClass("error");
});

Fiddle

您应该花点时间阅读 the Parsley documentation...
;)