Personalizar validación Javascript en plugin de Wordpress
Publicado por Alvaro (1 intervención) el 08/08/2017 16:58:24
Hola a todos,
por cuestiones de trabajo, estoy comenzando a trabajar con javascript pero a veces los requerimientos son mayores que el ritmo de trabajo. Muchas gracias de antemano por la ayuda.
Tengo un código que me funciona fuera de wordpress que sirve para validar una cuenta IBAN.
Por otro lado, tengo un plugin de wordpress de gestión de listas de correo al que le puedo añadir campos personalizados (en este caso el IBAN) además de los clásicos nombre y correo. Para validar este campo personalizado, tengo que modificar una función de javascript, integrándolo con el código anterior, pero no sé cómo llamar a la variable del formulario ya que el name del campo de texto es "required_file[]" para todos los campos personalizados.
Mil Gracias por adelantado
por cuestiones de trabajo, estoy comenzando a trabajar con javascript pero a veces los requerimientos son mayores que el ritmo de trabajo. Muchas gracias de antemano por la ayuda.
Tengo un código que me funciona fuera de wordpress que sirve para validar una cuenta IBAN.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
function fn_ValidateIBAN(iban) {
//Se pasa a Mayusculas
iban = iban.toUpperCase();
//Se quita los blancos de principio y final.
iban = trim(iban);
iban = iban.replace(/\s/g, ""); //Y se quita los espacios en blanco dentro de la cadena
var letra1,letra2,num1,num2;
var isbanaux;
var numeroSustitucion;
//La longitud debe ser siempre de 24 caracteres
if (iban.length != 24) {
return false;
}
// Se coge las primeras dos letras y se pasan a números
letra1 = iban.substring(0, 1);
letra2 = iban.substring(1, 2);
num1 = getnumIBAN(letra1);
num2 = getnumIBAN(letra2);
//Se sustituye las letras por números.
isbanaux = String(num1) + String(num2) + iban.substring(2);
// Se mueve los 6 primeros caracteres al final de la cadena.
isbanaux = isbanaux.substring(6) + isbanaux.substring(0,6);
//Se calcula el resto, llamando a la función modulo97, definida más abajo
resto = modulo97(isbanaux);
if (resto == 1){
return true;
}else{
return false;
}
}
function modulo97(IBAN) {
var parts = Math.ceil(IBAN.length/7);
var remainer = "";
for (var i = 1; i <= parts; i++) {
remainer = String(parseFloat(remainer+IBAN.substr((i-1)*7, 7))%97);
}
return remainer;
}
function getnumIBAN(letra) {
ls_letras = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
return ls_letras.search(letra) + 10;
}
Por otro lado, tengo un plugin de wordpress de gestión de listas de correo al que le puedo añadir campos personalizados (en este caso el IBAN) además de los clásicos nombre y correo. Para validar este campo personalizado, tengo que modificar una función de javascript, integrándolo con el código anterior, pero no sé cómo llamar a la variable del formulario ya que el name del campo de texto es "required_file[]" para todos los campos personalizados.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
function validateBFTProUser(frm, requireName) {
requireName = requireName || false;
if(requireName && frm.bftpro_name.value=="") {
alert(bftpro_i18n.name_required);
frm.bftpro_name.focus();
return false;
}
if(frm.email.value=="" || frm.email.value.indexOf("@")<1 || frm.email.value.indexOf(".")<1) {
alert(bftpro_i18n.email_required);
frm.email.focus();
return false;
}
/*VALIDAR IBAN
if (frm.iban.value!=="" || frm.iban.value.fn_ValidateIBAN(frm.elements["required_fields[1]"] : 0)) {
alert(bftpro_i18n.iban_required);
frm.iban.focus();
return false; }
else{
}
*/
//
// check custom fields
var req_cnt = frm.elements["required_fields[]"].length; // there's always at least 1
if(req_cnt > 1) {
for(i = 0; i<req_cnt; i++) {
var fieldName = frm.elements["required_fields[]"][i].value;
if(fieldName !='') {
var isFilled = false;
// ignore radios
if(frm.elements[fieldName].type == 'radio') continue;
// checkbox
if(frm.elements[fieldName].type == 'checkbox' && !frm.elements[fieldName].checked) {
alert(bftpro_i18n.required_field);
frm.elements[fieldName].focus();
return false;
}
//o validar en esta otra parte el iban
if(frm.elements[fieldName].value == 'field_2') {
fn_ValidateIBAN(frm.elements["required_fields[1]"];
}
else{
alert(bftpro_i18n.required_field);
frm.elements[fieldName].focus();
return false;
}
// all other fields
if(frm.elements[fieldName].value=="") {
alert(bftpro_i18n.required_field);
frm.elements[fieldName].focus();
return false;
}
}
}
}
// text captcha?
if(frm.bftpro_text_captcha_answer && frm.bftpro_text_captcha_answer.value == '') {
alert(bftpro_i18n.missed_text_captcha);
frm.bftpro_text_captcha_answer.focus();
return false;
}
return true;
}
Valora esta pregunta
0