Javascript Parsley.js-同一页面上不同形式的同名单选按钮一起验证
我已经搜索了将近两天了,但似乎找不到这个问题的答案 在一页上,我有两种不同的表格(登记、客人结账)。两者使用几乎相同的表单元素,这些表单元素具有相同的名称属性。提交时,只有当前表单得到验证,所有内容都可以正常工作,例如文本输入字段 但是:Parsley.js对单选按钮和复选框的处理方式有所不同-因此,在提交来宾结账表(标记第二)时,错误消息和类会添加到注册表中。这实际上只是这两种输入类型的情况 似乎欧芹对这些元素属于哪种形式没有影响。它只查看name属性。这有点烦人,尤其是当其他输入类型共享相同的名称属性时没有问题 以下是HTML的代码片段:Javascript Parsley.js-同一页面上不同形式的同名单选按钮一起验证,javascript,html,parsley.js,Javascript,Html,Parsley.js,我已经搜索了将近两天了,但似乎找不到这个问题的答案 在一页上,我有两种不同的表格(登记、客人结账)。两者使用几乎相同的表单元素,这些表单元素具有相同的名称属性。提交时,只有当前表单得到验证,所有内容都可以正常工作,例如文本输入字段 但是:Parsley.js对单选按钮和复选框的处理方式有所不同-因此,在提交来宾结账表(标记第二)时,错误消息和类会添加到注册表中。这实际上只是这两种输入类型的情况 似乎欧芹对这些元素属于哪种形式没有影响。它只查看name属性。这有点烦人,尤其是当其他输入类型共享相同
夫人
先生
名字
夫人
先生
名字
下面是JavaScript设置:
$(“[数据验证表单])。欧芹({
命名空间:“数据验证-”,
errorsWrapper:“”,
错误模板:“”,
errorClass:'错误',
成功班:“成功”
});
还有其他人遇到过这个问题吗?哦,我无法更改名称属性
提前感谢您的帮助 因此,我的同事和我找到了解决办法 在
handleMultiple
方法中,我们定义了元素的当前形式,并将其ID添加到multiple
字符串中:
// Add current form id to name to differ between several forms on same page.
var currentForm = $('#' + this.$element[0].form.id);
multiple = currentForm.attr('id') + '-' + multiple;
然后我们向输入选择器添加了currentForm
,如下所示:
$('input[name="' + name + '"]', currentForm).each(function () {...}
这样可以确保只选择正确形式的输入
然后移动到设置字段
方法。在\u ui.errorsWrapperId
的定义中,我们还添加了当前表单的ID(fieldInstance.$element[0].form.ID
)
原件:
_ui.errorsWrapperId = 'parsley-id-' + ('undefined' !== typeof fieldInstance.options.multiple ? 'multiple-' + fieldInstance.options.multiple : fieldInstance.__id__);
新的:
这是正确打印错误消息所必需的
也许这对其他人也有帮助
$('input[name="' + name + '"]', currentForm).each(function () {...}
_ui.errorsWrapperId = 'parsley-id-' + ('undefined' !== typeof fieldInstance.options.multiple ? 'multiple-' + fieldInstance.options.multiple : fieldInstance.__id__);
_ui.errorsWrapperId = 'parsley-id-' + ('undefined' !== typeof fieldInstance.options.multiple ? 'multiple-' + fieldInstance.$element[0].form.id + '-' + fieldInstance.options.multiple : fieldInstance.__id__);