jQuery表单验证程序-如何使用javascript更改数据验证可选属性?

jQuery表单验证程序-如何使用javascript更改数据验证可选属性?,javascript,jquery,forms,validation,Javascript,Jquery,Forms,Validation,我目前正在使用jQuery表单验证程序()。我目前有三个输入框,可以输入一个电话号码(3个号码,3个号码,4个号码)。由于电话号码是可选的,所以所有三个输入框都是可选的(data validation optional=“true”)。验证(确保只输入数字)对所有三个框都有效,但我的问题是验证插件没有检查以确保所有三个框都已填写。这是一个问题,因为用户可以填写一个框,但将另外两个框留空 我可以解决这个问题的方法是在提交表单时检查这三个框是否都有空字符串。如果是,则不执行任何操作,但如果只提交了一

我目前正在使用jQuery表单验证程序()。我目前有三个输入框,可以输入一个电话号码(3个号码,3个号码,4个号码)。由于电话号码是可选的,所以所有三个输入框都是可选的(data validation optional=“true”)。验证(确保只输入数字)对所有三个框都有效,但我的问题是验证插件没有检查以确保所有三个框都已填写。这是一个问题,因为用户可以填写一个框,但将另外两个框留空

我可以解决这个问题的方法是在提交表单时检查这三个框是否都有空字符串。如果是,则不执行任何操作,但如果只提交了一个框,则将所有三个框都设置为必填框(数据验证可选=“false”)

我在使用JavaScript更改输入的内联数据验证可选属性时遇到问题。当我使用document.getElementById(“phone1”).data validation optional=“false”时,它会给我一个javascript错误

这是我目前的代码:

输入:

<input type="text" id="phone1" name="phone1" tabindex="21" maxlength="3" value="" data-validation="custom" data-validation-regexp="^([0-9]{3})$" data-validation-optional="true" style="position:relative; display:block; left:24px; top:31px; width: 76px; height: 44px; text-align: center; padding-left: 0px;" data-validation-error-msg="- Mobile # is incorrect.">
任何帮助都将不胜感激!谢谢

试试看

$("#phone1").data('validation-optional') = "true";


两者都将使用
data validation optional=“…”
处理数据项集,尽管我不确定验证是否会受到影响。我找不到任何关于单个表单元素的“验证”事件的证据,也找不到验证插件将响应数据属性热交换的证据。您可能还需要“销毁”,然后重新调用插件。

您遇到的问题是没有以正确的方式访问数据属性。我注意到您正在使用jQuery,所以您不妨利用它。在jQuery中,可以使用和
.data()
访问数据属性

$('#phone1').attr('data-validation-optional', 'true');
Victorjonsson的验证器使用
.attr()
访问
数据验证-*=”
属性,因为使用
.attr()
无法访问使用
数据()
设置的值。反之亦然

这种方法的优点是,您不需要每次更改插件时都重新初始化插件


如果您不想使用jQuery,而选择使用普通javascript,那么可以使用
el.getAttribute('data-foo')
el.setAttribute('data-foo','bar')
以访问数据属性。更多信息

在您的情况下,代码应为:

document.getElementById('phone1').setAttribute('data-validation-optional', 'true');

您可以使用type=“tel”和pattern来完成此操作。您能否澄清您遇到的问题?您提到“更改内联数据验证可选属性”时遇到问题。你想把它改成什么?目前发生了什么?您可以共享更多信息和代码来澄清您遇到的问题,这将帮助您更快地找到答案!
$('#phone1').attr('data-validation-optional', 'true');
document.getElementById('phone1').setAttribute('data-validation-optional', 'true');