Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: .:Xx4NG3LxX:. en 19 Septiembre 2020, 23:13 pm



Título: [HTML] Permitir borrar hasta cierto punto en un input text o por el estilo
Publicado por: .:Xx4NG3LxX:. en 19 Septiembre 2020, 23:13 pm
Saludos,

Código
  1. <input type="url" id="url" class="i" value="http://" />

... Daría como resultado un campo de texto con "http://" como valor por defecto.
Lo que quisiera lograr, es que ese mismo texto no se pueda borrar. O sea, que el usuario escriba "hola.com", y dentro del input quede "http://hola.com"... Luego decide borrar todo pero que no pueda borrar "http://" (por ejemplo)...

Espero haberme explicado bien...

Gracias de antemano...


Título: Re: [HTML] Permitir borrar hasta cierto punto en un input text o por el estilo
Publicado por: .:Xx4NG3LxX:. en 22 Septiembre 2020, 00:46 am
Up


Título: Re: [HTML] Permitir borrar hasta cierto punto en un input text o por el estilo
Publicado por: @XSStringManolo en 22 Septiembre 2020, 01:01 am
Saludos,

Código
  1. <input type="url" id="url" class="i" value="http://" />

... Daría como resultado un campo de texto con "http://" como valor por defecto.
Lo que quisiera lograr, es que ese mismo texto no se pueda borrar. O sea, que el usuario escriba "hola.com", y dentro del input quede "http://hola.com"... Luego decide borrar todo pero que no pueda borrar "http://" (por ejemplo)...

Espero haberme explicado bien...

Gracias de antemano...
Yo usaría otro elemento a la izquierda.
<span>http://</span><input type="text" ...

Cuando se vaya a mandar el form compruebo el value del input y le añado el http.

Le metes padding al input y colocas el span encima del campo de texto del input con css.

Ejemplo básico:
Código
  1. <meta charset="utf-8">
  2.  <style>
  3.  #httpInput {
  4.    padding: 0 0 0 47px;
  5.    font-size: 1em;
  6.    width: 170px;
  7.  }
  8.  
  9.  #httpSpan {
  10.    position: fixed;
  11.    left: 10px;
  12.    font-size: 1em;
  13.  }
  14.  </style>
  15. </head>
  16.  
  17. <div id="httpContainer">
  18. <span id="httpSpan">http://</span>
  19. <input id="httpInput" type="text" placeholder="example.com">
  20. <button id="httpSend" type="button">Send!</button>
  21. </div>
  22.  
  23. document.querySelector("#httpSend").addEventListener("click", function(httpInput) {
  24.  httpInput = document.querySelector("#httpInput").value;
  25.  peticionGET("http://" + httpInput, function(resp) {
  26.    alert(resp);
  27.  });
  28. });
  29.  
  30.  
  31. function peticionGET(url, callback) {
  32.  var peticion = new XMLHttpRequest();
  33.  peticion.open("GET", url , true);
  34.  peticion.send();
  35.  peticion.onreadystatechange = function() {
  36.    if (peticion.readyState == 4) {
  37.      if (peticion.status == 0 || peticion.status == 200) {
  38.        callback(peticion.responseText);
  39.      }
  40.    }
  41.  }      
  42. }
  43. </body>
  44. </html>


Título: Re: [HTML] Permitir borrar hasta cierto punto en un input text o por el estilo
Publicado por: .:Xx4NG3LxX:. en 22 Septiembre 2020, 03:47 am
Si, de hecho ya yo había pensado en eso, pero pensé que sería una especie de la mala práctica poner el span encima del input... No sé si sea lo que busco... De igual manera gracias por tu tiempo, si no hallo alguna solución implementare la que me has proporcionado...


Título: Re: [HTML] Permitir borrar hasta cierto punto en un input text o por el estilo
Publicado por: EdePC en 22 Septiembre 2020, 03:57 am
Si, de hecho ya yo había pensado en eso, pero pensé que sería una especie de la mala práctica poner el span encima del input... No sé si sea lo que busco... De igual manera gracias por tu tiempo, si no hallo alguna solución implementare la que me has proporcionado...

Otra opción es comprobar el value y tomar decisiones, por ejemplo si ya tiene el http:// solo le agregas el nuevo texto introducido, si borran el http:// o parte de él pues lo vuelves a poner XD.

- En mi caso he utilizado un Expresión Regular para decir que siempre empiece con http://

Código
  1. <input type="text" value="http://" oninput="comprueba(this)">
  2.  
  3. <script>
  4.  function comprueba(e) {
  5.    if ( e.value.length < 7 ) {
  6.      e.value = 'http://'
  7.    } else if ( !e.value.match(/^http:\/\//) ) {
  8.      e.value = 'http://' + e.value
  9.    }
  10.  }
  11. </script>


Título: Re: [HTML] Permitir borrar hasta cierto punto en un input text o por el estilo
Publicado por: .:Xx4NG3LxX:. en 22 Septiembre 2020, 04:41 am
Me funciona pero... ¿Es lo más fácil? Muchas gracias por su tiempo..

Podrías explicarme de a paso esta parte del código?

Código
  1. /^http:\/\//


Título: Re: [HTML] Permitir borrar hasta cierto punto en un input text o por el estilo
Publicado por: @XSStringManolo en 22 Septiembre 2020, 06:34 am
Otra opción es no subir el elemento encima, simpmemente ponerlo al lado y sacarle los border, outlines, boxes y demás al input le pones solo borde a la derecha arriba y abajo al input y al contrario al span. Es probablemente la mejor solución. O no usar input y usar un span con contenteditable. Así no tienes que quitarle 20 historias.

Hay muchas formas, opta por la que te parezca más sencilla.

Me funciona pero... ¿Es lo más fácil? Muchas gracias por su tiempo..

Podrías explicarme de a paso esta parte del código?

Código
  1. /^http:\/\//
Es una expresión regular. Sirven para buscar en textos.

Ese código equivale a new RegExp("^http://");
El ^sirve para que busque el patrón al inicio.
El resto es el texto a buscar. En resumen, la exoredión chequea si existe http:// en el string.

El usa /texto/ porque es la forma literal de las expresiones regulares. De igual forma que haces "texto" en lugar de String(texto).
Después escapa las barras / con el caracter de escape \
Es lo mismo que "y el dijo:\" este es mi texto\" en un alarde de elocuencia" sirve para poder usar comillas dentro de comillas o barras dentro de barras.

https://eloquentjavascript.net/09_regexp.html

Si quieres también aceptar el https usa /^https?:\/\//


Título: Re: [HTML] Permitir borrar hasta cierto punto en un input text o por el estilo
Publicado por: .:Xx4NG3LxX:. en 22 Septiembre 2020, 07:09 am
Vale, muchísimas gracias por la explicación, se te agradece... Igual a EdePC...


Título: Re: [HTML] Permitir borrar hasta cierto punto en un input text o por el estilo
Publicado por: Xyzed en 24 Septiembre 2020, 20:58 pm
Hay varias funciones que realizan lo que vos necesitas actualmente, podes investigar y encontrarás más de una alternativa.
Desde mi punto de vista lo más fácil que podes hacer (y no queda tan mal) es lo siguiente:

Código:
<input type="text" value="http://" disbaled><input type="text" name="direccion">

Este código indicado arriba mostrará dos cajas de texto, una bloqueada (gracias al disabled, el cual no podrá ser alterado) y otra donde el usuario podría ingresar el texto/dirección que deseas.
Luego desde tu parte tendrías que recibir la cadena completa (agregando un nombre al valor que se encuentra en disabled, o simplemente crear un nuevo identificador con el valor "http/s://" según necesites) concatenando las cadenas.