Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Parsley.js-同一页面上不同形式的同名单选按钮一起验证_Javascript_Html_Parsley.js - Fatal编程技术网

Javascript Parsley.js-同一页面上不同形式的同名单选按钮一起验证

Javascript Parsley.js-同一页面上不同形式的同名单选按钮一起验证,javascript,html,parsley.js,Javascript,Html,Parsley.js,我已经搜索了将近两天了,但似乎找不到这个问题的答案 在一页上,我有两种不同的表格(登记、客人结账)。两者使用几乎相同的表单元素,这些表单元素具有相同的名称属性。提交时,只有当前表单得到验证,所有内容都可以正常工作,例如文本输入字段 但是:Parsley.js对单选按钮和复选框的处理方式有所不同-因此,在提交来宾结账表(标记第二)时,错误消息和类会添加到注册表中。这实际上只是这两种输入类型的情况 似乎欧芹对这些元素属于哪种形式没有影响。它只查看name属性。这有点烦人,尤其是当其他输入类型共享相同

我已经搜索了将近两天了,但似乎找不到这个问题的答案

在一页上,我有两种不同的表格(登记、客人结账)。两者使用几乎相同的表单元素,这些表单元素具有相同的名称属性。提交时,只有当前表单得到验证,所有内容都可以正常工作,例如文本输入字段

但是:Parsley.js对单选按钮和复选框的处理方式有所不同-因此,在提交来宾结账表(标记第二)时,错误消息和类会添加到注册表中。这实际上只是这两种输入类型的情况

似乎欧芹对这些元素属于哪种形式没有影响。它只查看name属性。这有点烦人,尤其是当其他输入类型共享相同的名称属性时没有问题

以下是HTML的代码片段:


夫人
先生
名字
夫人
先生
名字
下面是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__);