Retirez deux http: // d'entrée en utilisant jQuery
-
27-09-2019 - |
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.
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"