processmaker javascript jquery url

javascript - processmaker 3.2 wiki



Validador de jQuery URL (4)

Todas,

Estoy intentando utilizar el complemento Validador de URL de JQuery.

http://docs.jquery.com/Plugins/Validation/Methods/url

Tengo un cuadro de texto que tiene una URL. Quiero escribir una función que tome el valor del cuadro de texto, use el complemento validador de jquery para validar las URL y devuelva verdadero o falso.

Algo así como Ex:

function validateURL(textval) { // var valid = get jquery''s validate plugin return value if(valid) { return true; } return false; }

Quería que esto sea una función reutilizable ...

Gracias


¿Por qué no intentas usar expresiones regulares de JavaScript? ¡No necesita un complemento completo solo para validar URL! Hay muchos regex''s flotando sobre eso analizar una URL. Solo haz algo como:

if(textval.match(/<regular expression>/)) return true;

Además, si usa HTML5 es una opción, admite <input type="url"/> , por lo que no tiene que preocuparse por la validación de las URL en absoluto.


Podrías escribir una expresión regular, como otros han sugerido, pero es una tontería hacerlo tú mismo (¿por qué reinventar la rueda?) Y probablemente no vas a hacer un trabajo tan bueno como el plugin.

Tratar:

var isValid = function isValid(form, field){ return $(form).valid({ rules: { field: { required: true, url: true } } }); };

Donde forma es el nombre del formulario, y el campo es el nombre de la entrada en ese formulario. Elimine el "requerido: verdadero" si el campo no es obligatorio.

Esto no se ha probado, pero en función de los documentos a los que se vinculó en su pregunta, eso debería ponerlo en el camino correcto.

Además, no seas un idiota, pero deberías leer los documentos con más cuidado ... la respuesta a tu pregunta está ahí.


Al validar las URL, debe considerar que hay nuevos TLD aprobados y que ahora puede usar caracteres no latinos en los nombres de dominio (por ejemplo, http: //пример.испытание es una URL válida). Así que la expresión regular adecuada que cumple con RFC 3987 ( http://www.faqs.org/rfcs/rfc3987.html ) se ve así ( tomada de esta publicación )

/^[a-z](?:[-a-z0-9/+/.])*:(?:////(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9/._~/x{A0}-/x{D7FF}/x{F900}-/x{FDCF}/x{FDF0}-/x{FFEF}/x{10000}-/x{1FFFD}/x{20000}-/x{2FFFD}/x{30000}-/x{3FFFD}/x{40000}-/x{4FFFD}/x{50000}-/x{5FFFD}/x{60000}-/x{6FFFD}/x{70000}-/x{7FFFD}/x{80000}-/x{8FFFD}/x{90000}-/x{9FFFD}/x{A0000}-/x{AFFFD}/x{B0000}-/x{BFFFD}/x{C0000}-/x{CFFFD}/x{D0000}-/x{DFFFD}/x{E1000}-/x{EFFFD}!/$&''/(/)/*/+,;=:])*@)?(?:/[(?:(?:(?:[0-9a-f]{1,4}:){6}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:/.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|::(?:[0-9a-f]{1,4}:){5}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:/.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:/.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:[0-9a-f]{1,4}:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:/.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:/.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:/.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:/.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|v[0-9a-f]+[-a-z0-9/._~!/$&''/(/)/*/+,;=:]+)/]|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:/.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}|(?:%[0-9a-f][0-9a-f]|[-a-z0-9/._~/x{A0}-/x{D7FF}/x{F900}-/x{FDCF}/x{FDF0}-/x{FFEF}/x{10000}-/x{1FFFD}/x{20000}-/x{2FFFD}/x{30000}-/x{3FFFD}/x{40000}-/x{4FFFD}/x{50000}-/x{5FFFD}/x{60000}-/x{6FFFD}/x{70000}-/x{7FFFD}/x{80000}-/x{8FFFD}/x{90000}-/x{9FFFD}/x{A0000}-/x{AFFFD}/x{B0000}-/x{BFFFD}/x{C0000}-/x{CFFFD}/x{D0000}-/x{DFFFD}/x{E1000}-/x{EFFFD}!/$&''/(/)/*/+,;=@])*)(?::[0-9]*)?(?://(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9/._~/x{A0}-/x{D7FF}/x{F900}-/x{FDCF}/x{FDF0}-/x{FFEF}/x{10000}-/x{1FFFD}/x{20000}-/x{2FFFD}/x{30000}-/x{3FFFD}/x{40000}-/x{4FFFD}/x{50000}-/x{5FFFD}/x{60000}-/x{6FFFD}/x{70000}-/x{7FFFD}/x{80000}-/x{8FFFD}/x{90000}-/x{9FFFD}/x{A0000}-/x{AFFFD}/x{B0000}-/x{BFFFD}/x{C0000}-/x{CFFFD}/x{D0000}-/x{DFFFD}/x{E1000}-/x{EFFFD}!/$&''/(/)/*/+,;=:@]))*)*|//(?:(?:(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9/._~/x{A0}-/x{D7FF}/x{F900}-/x{FDCF}/x{FDF0}-/x{FFEF}/x{10000}-/x{1FFFD}/x{20000}-/x{2FFFD}/x{30000}-/x{3FFFD}/x{40000}-/x{4FFFD}/x{50000}-/x{5FFFD}/x{60000}-/x{6FFFD}/x{70000}-/x{7FFFD}/x{80000}-/x{8FFFD}/x{90000}-/x{9FFFD}/x{A0000}-/x{AFFFD}/x{B0000}-/x{BFFFD}/x{C0000}-/x{CFFFD}/x{D0000}-/x{DFFFD}/x{E1000}-/x{EFFFD}!/$&''/(/)/*/+,;=:@]))+)(?://(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9/._~/x{A0}-/x{D7FF}/x{F900}-/x{FDCF}/x{FDF0}-/x{FFEF}/x{10000}-/x{1FFFD}/x{20000}-/x{2FFFD}/x{30000}-/x{3FFFD}/x{40000}-/x{4FFFD}/x{50000}-/x{5FFFD}/x{60000}-/x{6FFFD}/x{70000}-/x{7FFFD}/x{80000}-/x{8FFFD}/x{90000}-/x{9FFFD}/x{A0000}-/x{AFFFD}/x{B0000}-/x{BFFFD}/x{C0000}-/x{CFFFD}/x{D0000}-/x{DFFFD}/x{E1000}-/x{EFFFD}!/$&''/(/)/*/+,;=:@]))*)*)?|(?:(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9/._~/x{A0}-/x{D7FF}/x{F900}-/x{FDCF}/x{FDF0}-/x{FFEF}/x{10000}-/x{1FFFD}/x{20000}-/x{2FFFD}/x{30000}-/x{3FFFD}/x{40000}-/x{4FFFD}/x{50000}-/x{5FFFD}/x{60000}-/x{6FFFD}/x{70000}-/x{7FFFD}/x{80000}-/x{8FFFD}/x{90000}-/x{9FFFD}/x{A0000}-/x{AFFFD}/x{B0000}-/x{BFFFD}/x{C0000}-/x{CFFFD}/x{D0000}-/x{DFFFD}/x{E1000}-/x{EFFFD}!/$&''/(/)/*/+,;=:@]))+)(?://(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9/._~/x{A0}-/x{D7FF}/x{F900}-/x{FDCF}/x{FDF0}-/x{FFEF}/x{10000}-/x{1FFFD}/x{20000}-/x{2FFFD}/x{30000}-/x{3FFFD}/x{40000}-/x{4FFFD}/x{50000}-/x{5FFFD}/x{60000}-/x{6FFFD}/x{70000}-/x{7FFFD}/x{80000}-/x{8FFFD}/x{90000}-/x{9FFFD}/x{A0000}-/x{AFFFD}/x{B0000}-/x{BFFFD}/x{C0000}-/x{CFFFD}/x{D0000}-/x{DFFFD}/x{E1000}-/x{EFFFD}!/$&''/(/)/*/+,;=:@]))*)*|(?!(?:%[0-9a-f][0-9a-f]|[-a-z0-9/._~/x{A0}-/x{D7FF}/x{F900}-/x{FDCF}/x{FDF0}-/x{FFEF}/x{10000}-/x{1FFFD}/x{20000}-/x{2FFFD}/x{30000}-/x{3FFFD}/x{40000}-/x{4FFFD}/x{50000}-/x{5FFFD}/x{60000}-/x{6FFFD}/x{70000}-/x{7FFFD}/x{80000}-/x{8FFFD}/x{90000}-/x{9FFFD}/x{A0000}-/x{AFFFD}/x{B0000}-/x{BFFFD}/x{C0000}-/x{CFFFD}/x{D0000}-/x{DFFFD}/x{E1000}-/x{EFFFD}!/$&''/(/)/*/+,;=:@])))(?:/?(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9/._~/x{A0}-/x{D7FF}/x{F900}-/x{FDCF}/x{FDF0}-/x{FFEF}/x{10000}-/x{1FFFD}/x{20000}-/x{2FFFD}/x{30000}-/x{3FFFD}/x{40000}-/x{4FFFD}/x{50000}-/x{5FFFD}/x{60000}-/x{6FFFD}/x{70000}-/x{7FFFD}/x{80000}-/x{8FFFD}/x{90000}-/x{9FFFD}/x{A0000}-/x{AFFFD}/x{B0000}-/x{BFFFD}/x{C0000}-/x{CFFFD}/x{D0000}-/x{DFFFD}/x{E1000}-/x{EFFFD}!/$&''/(/)/*/+,;=:@])|[/x{E000}-/x{F8FF}/x{F0000}-/x{FFFFD}|/x{100000}-/x{10FFFD}///?])*)?(?:/#(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9/._~/x{A0}-/x{D7FF}/x{F900}-/x{FDCF}/x{FDF0}-/x{FFEF}/x{10000}-/x{1FFFD}/x{20000}-/x{2FFFD}/x{30000}-/x{3FFFD}/x{40000}-/x{4FFFD}/x{50000}-/x{5FFFD}/x{60000}-/x{6FFFD}/x{70000}-/x{7FFFD}/x{80000}-/x{8FFFD}/x{90000}-/x{9FFFD}/x{A0000}-/x{AFFFD}/x{B0000}-/x{BFFFD}/x{C0000}-/x{CFFFD}/x{D0000}-/x{DFFFD}/x{E1000}-/x{EFFFD}!/$&''/(/)/*/+,;=:@])|[///?])*)?$/i

Puede usar esta expresión con JavaScript o usar el complemento de validación de jQuery que tiene validadores de compilación para URL y direcciones de correo electrónico


El validate () jQuery está hecho para validar un formulario en sí, creo, no solo un campo individual.

Creo que sería mejor usar una expresión regular para validar un solo cuadro de texto si no está tratando de hacer una validación de formulario.

Aquí hay un ejemplo de una pregunta de SO que funciona.

function validateURL(textval) { var urlregex = new RegExp( "^(http:////www.|https:////www.|ftp:////www.|www.){1}([0-9A-Za-z]+/.)"); return urlregex.test(textval); }

Fuente: aquí