JavaScript - Personalizar validación Javascript en plugin de Wordpress

 
Vista:
sin imagen de perfil

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.
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;
}
Mil Gracias por adelantado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder