我正在制作一个程序,您需要将西班牙文文档(NIF、NIE、CIF)放入其中,我需要检查输入的数据是否正确。
用户在单个输入中输入值,它必须与 NIF、NIE 或 CIF 格式匹配。
这是我到目前为止的代码:
if (document.formProveedor.NIF.value!="") {
var regNIF = /^([0-9]){8}([A-Z]){1}$/;
var regNIE = /^([A-Z]){1}([0-9]){7}([A-Z]){1}$/;
var regCIF = /^([A-Z]){1}([0-9]){8}}$/;
if(regNIF.test(document.formProveedor.NIF.value) == false) {
alert("El NIF introducido no es correcto.");
document.formProveedor.NIF.focus();
return false;
}else if(regNIE.test(document.formProveedor.NIF.value) == false){
alert("El NIE introducido no es correcto.");
document.formProveedor.NIF.focus();
return false;
}else if(regCIF.test(document.formProveedor.NIF.value) == false){
alert("El CIF introducido no es correcto.");
document.formProveedor.NIF.focus();
return false;
}
}
例子:
NIF: 74063793K
NIE: Y9945517D
CIF: G82868043
当我用 NIF 填充该字段并执行该函数时,我会收到警报
“输入的 NIE 不正确。”
当我用 NIE 填写该字段并执行该函数时,我收到警报
“输入的 NIF 不正确。”
当我用 CIF 填充该字段并执行该函数时,我会收到警报
“输入的 NIF 不正确。”
你的问题是你一个一个看:如果你输入一个 NIF,显然它不是 CIF,它会给你错误,类似地它发生在 CIF 或 NIE 上。
最简单的解决方案是(在伪代码中):
但更好的解决方案是首先在 select 中选择验证器,并将其应用于输入的数据,因为当用户真正想要输入 CIF 时,可能会错误地输入 NIE 的有效值。
我已经重新制定了你这样做的方式,在我看来,你应该使用某种下拉菜单来选择你想要什么样的验证,所以你不必写很多行来比较它只是 NIF、CIF、NIE,等等
首先,我制作了一个包含类型和验证的对象数组。
有了这个,我制作了一个带有
validar
两个参数的函数:tipo
andnumero
,其中类型是 NIE、NIF、DNI、CIF... 并且数字是您要检查的值。调用它是这样的:
请记住,要填写参数
tipo
,最好使用下拉菜单。