Question

J'ai un textarea avec une valeur par défaut de http://. Maintenant, lorsqu'un utilisateur colle dans une URL (s'ils ne savent pas ce qu'ils font, comme la plupart des gens), il est comme ça http://http://www.google.com. Je l'ai vu un site qui, dès que vous avez http://http:// il supprime une via JavaScript.

Je ne suis pas familier avec JavaScript, si quelqu'un peut me aider?

Je ne veux pas effacer le champ de mise au point uniquement.

Était-ce utile?

La solution

Vous n'êtes pas obligé de le faire ajax javascript tout simple peut faire l'affaire.

jQuery(document).ready(function(){

    jQuery('#idofurtextfield').blur(function(){

        jQuery(this).val(jQuery(this).val().replace(/(http:\/\/)\1/, '$1'));

    });

});

Autres conseils

La simplicité et l'utilisation du remplacer fonction:

var url = "http://http://google.com";
url = url.replace("http://http://","http://");

... ceci remplacera essentiellement la première chaîne "http://http://" par le second, « http://".

Vous devez appeler quand le contenu du changement sur le terrain. Par exemple en utilisant jQuery:

$("#myfield").change(function(e){
  $(this).val($(this).val().replace("http://http://","http://"));
});

sans jQuery (pas 100% sûr à ce sujet):

document.getElementById("myfield").onChange = function(){
  var val=document.getElementById("myfield").value;
  document.getElementById("myfield").value = value.replace("http://http://","http://");
}

mais non apparentés Il convient de mentionner: Ce n'est pas AJAX, javascript est simple. Ajax est le terme utilisé lorsque vous essayez d'avoir une communication asynchrone avec un serveur en utilisant l'objet XMLHTTP

  

Ajax (raccourci pour asynchrone   JavaScript et XML) est un groupe de   développement web liés   techniques utilisées sur le côté client de   créer des applications Web interactives.   Avec Ajax, les applications Web peuvent   récupérer des données à partir du serveur   de manière asynchrone dans l'arrière-plan   sans interférer avec l'affichage   et le comportement de la page existante.

( via )

Pas du tout Ajax pour faire ce genre de magie.

fera:

$(function(){
  $('textarea').bind('keydown', function(e){
    var $this = $(this);
     if(e.which === 86 && e.ctrlKey){
       setTimeout(function(){
          $this.val($this.val().replace(/http:\/\/http:\/\//,"http://"));
       }, 1);
     }
  });
});​

Il remplacera http:// sur ctrl+v si elle existe déjà. Vous pouvez également appeler la même routine sur un événement change si une utilisation de l'utilisateur un contextmenu pour coller.

Il est toujours agréable d'avoir une option aucune regex (sauver ces micro-précieuses secondes!):

var url = "http://http://google.com";
url = url.substring(url.lastIndexOf("http://"));

// -> "http://google.com"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top