2012-07-04 3 views
0

j'utilise une jquery pour une boîte de saisie pour valider le contenu de cette je personne qui a travaillé avant moi faire un fichier qui s'appelle comoon.js et ce fichier supporte tous les autres fichiers. Mais quand j'écris ce code sur (document) .ready (function() comme cecijquery pour regexp ne fonctionne pas

$(document).ready(function() 
{ 
    $('#validate').keyup(function(){ 
     var i = $('input'); 
     (/http:\/\//).test(i.val()) && i.val(i.val().replace('http://','')); 
    }); 

});

et j'ai boîte d'entrée comme celui-ci

<input type="text" id="validate" class="right" name="linkurl" maxlength="150" size="130"/> 

mais cela ne fonctionne pas sur ce bouton que dois-je faire et quel est le problème et je sais que le fichier js chargé de toutes les pages ...

+0

Pourquoi cette question est-elle tagguée avec "jquery-ajax"? L'entrée en question est-elle créée dynamiquement après un appel ajax? – nnnnnn

+0

ouais exactement mais mon ami j'utilise la fonction en direct comme .live ('keyup' ........ –

+0

et il fonctionne dosent –

Répondre

2

en supposant que vous avez plus d'une entrée sur votre page le problème est cette ligne:

var i = $('input'); 

... qui met i à un objet jQuery contenant toutes les entrées sur la page. Essayez plutôt:

var i = $(this); 

... qui établira i à un objet jQuery contenant uniquement l'élément de l'événement sur.

(Votre code fonctionne quand il n'y a qu'une seule entrée.)

Si l'entrée en question est créé dynamiquement après chargement de la page, vous aurez une deuxième question: vous ne pouvez pas lier un gestionnaire d'événements à un élément qui n'existe pas encore, mais vous pouvez utiliser un gestionnaire d'événements délégué:

$(document).ready(function() 
{ 
    $(document).on("keyup", '#validate', function(){ 
     var i = $(this); 
     (/http:\/\//).test(i.val()) && i.val(i.val().replace('http://','')); 
    }); 
}); 

Où idéalement vous souhaitez remplacer document en $(document).on("keyup", '#validate', ... avec l'ancêtre le plus proche de « #validate » qui existe sur la charge de page. Si vous utilisez une version de jQuery inférieure à 1.7, utilisez .delegate() au lieu de .on() (pour plus d'informations, consultez le document doc API jQuery).

+0

travail toujours dosent? j'ai essayé ceci mais il travail dosent –

+0

Cela a fonctionné très bien pour moi avec un champ dynamiquement créé ici: http://jsfiddle.net/EMgE6/ – nnnnnn

+0

ok a obtenu le problème parce que ma jquery était vieux –

Questions connexes