2010-08-23 10 views
0

Im travailler un script de vérification de domaine ça fonctionne bien quand j'appelle ajax sur keyup mais par défaut la liste déroulante a le .com et si l'utilisateur choisit un domaine qui est déjà pris, comment puis-je obtenir ce script pour faire une autre vérification lorsque le les utilisateurs passent de .com à .net ou .org?appelant jquery ajax() avec menu déroulant?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script type='text/JavaScript'> 

$(document).ready(function() { 

    var validateUsername = $('#validateUsername'); 
    $('#domain').keyup(function() { 
     var domain = $('#domain').val(); 
     var tld = $('#tld').val(); 
     if (this.value != this.lastValue) { 
      if (this.timer) clearTimeout(this.timer); 
      validateUsername.removeClass('error').html('checking...'); 
      this.timer = setTimeout(function() { 
       $.ajax({ 
        url: 'DomainCheck.php', 
        data: 'domain=' + domain + '&tld=' + tld, 
        dataType: 'json', 
        type: 'post', 
        success: function (j) { 
         validateUsername.html(j.msg); 
        } 
       }); 
      }, 3500); 
      this.lastValue = this.value; 
     } 
    }); 
}); 

</script> 
</head> 
<body> 
    <form action="" method="post"> 
      <fieldset> 
       <legend>choose your domain</legend> 
       <div> 
        <span class="httpFont">http://www.</span> 
        <input type="text" name="domain" value="" id="domain" autocomplete="off" /> 
        <select id="tld" name="tld"> 
        <option selected="selected" value="com">.com</option> 
        <option value="net">.net</option> 
        <option value="org">.org</option> 
        </select>&nbsp;<span id="validateUsername"></span> 
       </div> 
      </fieldset> 
      <input type="hidden" name="action" value="register" /> 
      <div class="submit"> 
      <input type="submit" alt="Submit button"> 
    </form> 
</body> 
</html> 

Répondre

2

Quelque chose comme ceci:

$('select[name="tld"]').change(function() { 
    //your ajax code 
}); 

Ce serait bien sûr dupliquer votre code, donc je recommande l'envelopper dans une fonction.

+0

supprimer le « » autour tld, il devrait donc être $ (« select [name = tld] ») ... – Manie

0

merci pour la saisie automatique, j'enveloppé dans une fonction et il fonctionne jusqu'à ce que la deuxième demande

par exemple par défaut .com je change de .net, il ne fonctionne pas et le changement de i à .org, puis il commence travailler. aussi je vous connecter tous les enregistrements MySQL et la création d'entrées en double

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script type='text/JavaScript'> 

$(document).ready(function() { 

    var validateUsername = $('#validateUsername'); 
    $('#domain').keyup(function() { 
     var domain = $('#domain').val(); 
     var tld = $('#tld').val(); 
     if (this.value != this.lastValue) { 
      if (this.timer) clearTimeout(this.timer); 
      validateUsername.removeClass('error').html('checking...'); 
      this.timer = setTimeout(function() { 
       $.ajax({ 
        url: 'DomainCheck.php', 
        data: 'domain=' + domain + '&tld=' + tld, 
        dataType: 'json', 
        type: 'post', 
        success: function (j) { 
         validateUsername.html(j.msg); 
        } 
       }); 
      }, 3500); 
      this.lastValue = this.value; 
     } 
    }); 
}); 

</script> 
<script type="text/javascript"> 
function checkDom(){ 
var validateUsername = $('#validateUsername'); 
$('select[name="tld"]').change(function() { 
var domain = $('input[name="domain"]').val(); 
var tld = $('select[name="tld"]').val();  
validateUsername.removeClass('error').html('checking...'); 
$.ajax({ 
url: 'DomainCheck.php', 
data: 'domain=' + domain + '&tld=' + tld, 
dataType: 'json', 
type: 'post', 
success: function (j) { 
validateUsername.html(j.msg); 
} 
});  
}); 
} 
} 
</script> 

</head> 
<body> 
    <form action="" method="post"> 
      <fieldset> 
       <legend>choose your domain</legend> 
       <div> 
        <span class="httpFont">http://www.</span> 
        <input type="text" name="domain" value="" id="domain" autocomplete="off" /> 
        <select onchange="checkDom()" id="tld" name="tld"> 
        <option selected="selected" value="com">.com</option> 
        <option value="net">.net</option> 
        <option value="org">.org</option> 
        </select>&nbsp;<span id="validateUsername"></span> 
       </div> 
      </fieldset> 
      <input type="hidden" name="action" value="register" /> 
      <div class="submit"> 
      <input type="submit" alt="Submit button"> 
    </form> 
</body> 
</html> 
+0

Vous devez utiliser en direct . Plus à ce sujet ici http://api.jquery.com/live/ Quelque chose comme ceci: $ (selecter) .live ('change', function() {...}); Ou la deuxième option serait similaire, mais vous devrez lier l'événement vous-même. – realshadow

+0

je devais finir ça demain. Merci beaucoup!! .... – bruce