Вызов jquery ajax () с выпадающим меню? - PullRequest
0 голосов
/ 23 августа 2010

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

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

2 голосов
/ 23 августа 2010

Примерно так:

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

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

0 голосов
/ 23 августа 2010

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

например, по умолчанию .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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...