validacion - validar formulario javascript onclick
¿Cómo comprobar si la URL contiene una cadena dada? (16)
¿Cómo podría hacer algo como esto?
<script type="text/javascript">
$(document).ready(function () {
if(window.location.contains("franky")) // This doesn''t work, any suggestions?
{
alert("your url contains the name franky");
}
});
</script>
Use Window.location.href para tomar la url en javascript. es una propiedad que le indicará la ubicación actual de la URL del navegador. Establecer la propiedad en algo diferente redirigirá la página.
if (window.location.href.indexOf(''franky'') > -1) {
alert("your url contains the name franky");
}
La forma regex:
location.href.match(/(192.168|localhost).*:1337/)
O en una simple declaración puedes usar:
(''''+window.location).includes("franky")
Uso esto para probar si el sitio web se ejecuta localmente o en un servidor:
window.location.toString().includes("franky")
Esto comprueba si el href contiene 192.168
o localhost
AND es seguido por :1337
.
Como puede ver, el uso de expresiones regulares tiene sus ventajas sobre las otras soluciones cuando la condición se vuelve un poco más complicada.
Las expresiones regulares serán más óptimas para muchas personas debido a los límites de palabras o dispositivos similares. Los límites de las palabras se producen cuando cualquiera de 0-9
, az
, AZ
, _
está en ese lado de la próxima coincidencia, o cuando un carácter alfanumérico se conecta al final o al principio de la línea o cadena.
if (location.href.match(/(?:/b|_)franky(?:/b|_)))
Si usa if(window.location.href.indexOf("sam")
, obtendrá coincidencias para flotsam
y lo same
, entre otras palabras. tom
coincidiría con tomate y mañana, sin regex.
Hacer que distingue entre mayúsculas y minúsculas es tan simple como quitar el i
.
Además, agregar otros filtros es tan fácil como
if (location.href.match(/(?:/b|_)(?:franky|bob|billy|john|steve)(?:/b|_)/i))
Hablemos de (?:/b|_)
. RegEx normalmente define _
como un word character
para que no cause un límite de palabra. Usamos esto (?:/b|_)
para lidiar con esto. Para ver si encuentra /b
o _
en cualquier lado de la cadena.
Otros idiomas pueden necesitar usar algo como
if (location.href.match(/([^/wxxx]|^)(?:franky|bob|billy|john|steve)([^/wxxx]|$)/i))
//where xxx is a character representation (range or literal) of your language''s alphanumeric characters.
Todo esto es más fácil que decir.
var x = location.href // just used to shorten the code
x.indexOf("-sam-") || x.indexOf("-sam.") || x.indexOf(" sam,") || x.indexOf("/sam")...
// and other comparisons to see if the url ends with it
// more for other filters like frank and billy
Los sabores de Expresiones regulares en otros lenguajes son compatibles con /p{L}
pero no con JavaScript, lo que facilitaría mucho la tarea de detectar caracteres extraños. Algo como [^/p{L}](filters|in|any|alphabet)[^/p{L}]
Más fácil se pone
<script type="text/javascript">
$(document).ready(function () {
var url = window.location.href;
if(url.includes(''franky'')) //includes() method determines whether a string contains specified string.
{
alert("url contains franky");
}
});
</script>
Me gusta crear un boolean
y luego usar eso en un lógico if
.
//kick unvalidated users to the login page
var onLoginPage = (window.location.href.indexOf("login") > -1);
if (!onLoginPage) {
console.log(''redirected to login page'');
window.location = "/login";
} else {
console.log(''already on the login page'');
}
Necesita agregar propiedad href y verificar indexOf
lugar de contains
<script type="text/javascript">
$(document).ready(function () {
if(window.location.href.indexOf("franky") > -1) {
alert("your url contains the name franky");
}
});
</script>
Pon en tu archivo js
var url = window.location.href;
console.log(url);
console.log(~url.indexOf("#product-consulation"));
if (~url.indexOf("#product-consulation")) {
console.log(''YES'');
// $(''html, body'').animate({
// scrollTop: $(''#header'').offset().top - 80
// }, 1000);
} else {
console.log(''NOPE'');
}
Prueba esto, es más corto y funciona exactamente como window.location.href
:
if (document.URL.indexOf("franky") > -1) { ... }
También si quieres comprobar la URL anterior:
if (document.referrer.indexOf("franky") > -1) { ... }
Prueba esto:
<script type="text/javascript">
$(document).ready
(
function ()
{
var regExp = /franky/g;
var testString = "something.com/frankyssssddsdfjsdflk?franky";//Inyour case it would be window.location;
if(regExp.test(testString)) // This doesn''t work, any suggestions.
{
alert("your url contains the name franky");
}
}
);
</script>
Prueba indexOf
if (foo.indexOf("franky") >= 0)
{
...
}
También puedes intentar buscar (para expresiones regulares)
if (foo.search("franky") >= 0)
{
...
}
Supongamos que tienes este script
<div>
<p id="response"><p>
<script>
var query = document.location.href.substring(document.location.href.indexOf("?") + 1);
var text_input = query.split("&")[0].split("=")[1];
document.getElementById(''response'').innerHTML=text_input;
</script> </div>
Y el formulario de url es www.localhost.com/web_form_response.html?text_input=stack&over=flow
El texto escrito en <p id="response">
se stack
Usted usaría indexOf
así:
if(window.location.href.indexOf("franky") != -1){....}
También note la adición de href
para la cadena, de lo contrario haría:
if(window.location.toString().indexOf("franky") != -1){....}
al igual que:
<script type="text/javascript">
$(document).ready(function () {
if(window.location.href.indexOf("cart") > -1)
{
alert("your url contains the name franky");
}
});
</script>
window.location
no es una cadena, pero tiene un método toString()
. Así que puedes hacerlo así:
var matches = !!location.href.match(/franky/); //a boolean value now
o
if (location.href.match(/franky/)) {
De los viejos documentos de Mozilla :
Los objetos de ubicación tienen un método toString que devuelve la URL actual. También puede asignar una cadena a window.location. Esto significa que puede trabajar con window.location como si fuera una cadena en la mayoría de los casos. A veces, por ejemplo, cuando necesita llamar a un método String en él, tiene que llamar explícitamente aString.
document.URL
debería obtener la URL
y
if(document.URL.indexOf("searchtext") != -1) {
//found
} else {
//nope
}
if (window.location.href.indexOf("franky") != -1)
Lo haría. Alternativamente, podrías usar una expresión regular:
if (/franky/.test(window.location.href))