在'parsley:field:success'上使用多个Parsley Field实例?

时间:2015-05-27 11:24:46

标签: javascript jquery parsley.js

我正在尝试在验证两个特定字段时删除表单上的验证消息。

我可以在成功验证一个字段时执行此操作,但是当多个字段(或者甚至是一个组)已经过验证时,我将如何进行此操作?

以下是我想要完成的事情

$.listen('parsley:field:success', function (parsleyField) {
    if ((parsleyField.$element.attr('name') == 'field1')) && ((parsleyField.$element.attr('name') == 'field2')){
        $(".tab-nav-1").removeClass("tab-validation-error")
    }
});

在验证一组字段时是否有办法执行某些操作(即使表单不是)?

1 个答案:

答案 0 :(得分:2)

这不起作用,因为try { String receivedData = new AsyncTask().execute("http://yourdomain.com/yourscript.php").get(); } catch (ExecutionException | InterruptedException ei) { ei.printStackTrace(); } 仅与一个字段相关联。也就是说,如果你有一个带有两个(有效)输入的表单,那么每个输入都会执行一次该函数。

更新了解决方案

查看Parsley's events结果表明,您可以使用在执行表单验证后触发的parsleyField。使用此事件可以简化解决方案,因为您只需检查输入是否有效。这是您需要的代码(jsfiddle available):

parsley:form:validated

原始解决方案

您可以创建一个数组来存储输入字段,如果它们变为无效则删除它们。然后,每次执行验证时,只需检查数组中是否存在字段,如果存在,则删除该类。否则,添加该类。

不可否认,解决方案并不像人们想的那样直截了当。看一下下面的代码(jsfiddle available

$.listen('parsley:form:validated', function (parsleyForm) {
    var isValidField1 = $("input[name=field1]").parsley().isValid(),
        isValidField2 = $("input[name=field2]").parsley().isValid();

    if (isValidField1 && isValidField2) {
        $(".tab-nav-1").removeClass("tab-validation-error");
    } else {
        $(".tab-nav-1").addClass("tab-validation-error");
    }
});