使用 jquery 去除 Parsley Excluded 似乎不起作用

Using jquery to remove Parsley Excluded doesn't seem to work

我有一项任务要求我使用欧芹选择性地验证输入,然后在输入有效值后将其从欧芹中排除(将其设为只读)。但是如果用户清除它,我需要删除排除的数据属性,并将欧芹重新绑定到表单。我正在做所有这一切,但好像要么。 excluded 实际上并没有被删除,或者 b。欧芹没有重新绑定。这是一些代码:

var handleValidation = function($form, type){
            //this works for the initial validation. Meaning it will return
            //false the first time (before I add/remove the excluded data attr)
            var formId =  $form.attr('id');
            var valid = $('#' + formId).parsley().validate({group: ""+type + "-validation", force: true});
            return valid;
};

var reBindParsley = function(parsleyDef,formId){
        $('#' + formId).parsley().destroy();
        parsleyDef();
    };

    $clearIcon.click(function(){
        //find input traversing the dom
        $input.prop("readonly", false); //this works fine
        $input.removeData('parsley-excluded'); //not sure if this is needed
        $input.removeAttr('data-parsley-excluded'); //this gets removed from the visual representation of the DOM, 
                                                 //but when i call validation on it, it's as if it's still there
        reBindParsley();
    })

//this will handle validating the input
$myInput.click(function(){
    var valid = handleValidation($form, type);
    if(valid){
        makeReadOnly() //adds $myInput.attr('data-parsley-excluded', true);
        reBindParsley(parsleyFunction, form);
    }
});

因此在调用 clearIcon 单击事件中的代码后,下次我单击输入时,它应该调用 handleValidation(),如果值无效则 return false(就像第一次),但没有。我检查了 firefox 调试器中 DOM 的可视化表示,排除的数据不存在。

非常感谢任何帮助!

不是 100% 是怎么回事,但有一个更简单的方法。

不需要

$input.removeData('parsley-excluded'),也不需要调用 destroy.

var formId = $form.attr('id'); var valid = $('#' + formId).parsley... 就是 $form.parsley...

只需添加到表单的排除列表 [readonly] 就可以了。否则,请 post 工作 fiddle.