我有一个问题,我使用js插件Parsley验证我的表单,并在启动Parsely插件的页面上输入表单输入类型="文件"不工作,不可点击" ,单击时看到按钮动画,但没有弹出文件系统选择要上传的文件,并且输入未经解析验证,所有页面上的输入有Parsly不起作用,当我注释掉时Parsley实例化文件输入按预期工作,这是我如何初始化插件:
app.Manage.BasicInfoForm.parsley(app.Manage.validatorConfig).validate();
在执行此行之前,如果我声明自定义验证器将阻止文件输入工作,输入也能正常工作,如:
window.Parsley.addValidator('reservednamescheck',
function (value, requirement) {
var noAllow = app.websiteManage.noAllowWebsiteNames;
var forbbidenName = '';
for (var i = noAllow.length - 1; i >= 0; i--) {
if (value === noAllow[i]) {
forbbidenName = noAllow[i];
return false;
}
}
return true;
}, 32)
.addMessage('en', 'reservednamescheck', 'Sorry but this name is reserved');
所以这也会阻止文件输入同样工作,即使文件输入在页面的任何地方是独立的,当Parsley存在时它也不起作用,请帮助,谢谢
答案 0 :(得分:1)
我的不好,问题不在于插件,而是在jquery事件中,这段代码导致了问题:
$(document).on('click input ', app.websiteManage.websiteNameInput , function(event) {
event.preventDefault();
// detects if inputed website name accordingly changes the title
app.websiteManage.websiteNameBind.html(app.websiteManage.websiteNameInput.val());
});
所以我正在听取点击并阻止默认行为,这就是为什么我的输入文件无法正常工作,感谢所有试图提供帮助的人;)
答案 1 :(得分:0)
检查您的版本号。 API已更改,在2.0+版本中,第3个参数是欧芹实例。</ p>
因此,您可以在函数中添加消息,例如:
window.Parsley.addValidator('myvalidator', {
requirementType: 'string',
validateMultiple: function(value, dataProp, instance) {
.
.
.
instance.reset(); // clear previous error
instance.addError('en', {message: 'my message here'});
return false;
},
messages: {
en: '...'
}
})