2010-08-23 3 views
0

Я работаю над скриптом проверки домена, он отлично работает, когда я вызываю ajax на клавиатуре, но по умолчанию выпадающий список имеет .com, если пользователь выберет домен, который уже был взят, как я могу заставить этот скрипт выполнить еще одну проверку, когда пользователи переключаются с .com на .net или .org?вызов jquery ajax() с выпадающим меню?

<!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> 

ответ

2

Что-то вроде этого:

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

Это было бы, конечно, дублировать код, так что я бы порекомендовал завернув внутри функции.

+0

удалить «» вокруг TLD, поэтому она должна быть $ («выберите [имя = TLD]») ... – Manie

0

спасибо невозможно воспроизвести, я завернул его в функцию, и она работает до второго запроса

для примера по умолчанию .com я изменяю .net это не работает, и изменение я на .org, а затем он начинает работать. Также я фиксируя все проверки в MySQL и его создания повторяющихся записей

<!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

Вы должны использовать в прямом эфире , Подробнее об этом здесь http://api.jquery.com/live/ Что-то вроде этого: $ (selecter) .live ('change', function() {...}); Или второй вариант будет похож, но вам придется привязать событие самостоятельно. – realshadow

+0

Я должен был закончить это завтра. Огромное спасибо!! .... – bruce

Смежные вопросы