Проверка электронной почты Сообщение в реальном времени, электронная почта отображается случайным образом и остается - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь отобразить сообщение электронной почты, введенное в поле ввода адреса электронной почты, в сообщении проверки. Поле ввода также уже проверяет мою базу данных на наличие зарегистрированных электронных писем, а затем отображает сообщение в зависимости от результата. Я затем добавил этот код отсюда .

В результате валидатор вернется со своим сообщением, но с пустым интервалом для электронного письма. Если я введу ключ, электронное письмо будет отображаться в течение доли секунды, а затем исчезнет (из-за того, что валидатор перепроверил базу данных), но сообщение «Подтверждение будет отправлено» вернется, но интервал электронной почты останется пустым.

<script>
//echo typed in email
    $('#youremail').keydown(function() {
    $('#youremail-confirm').text($(this).val());
    });
//check if the current user is already taken
$('#youremail').keyup(function(){
    var user = $('#youremail').val();
    var userlength = document.getElementById("youremail").value.length;
    if(userlength >= 8 && userlength <= 60) {
        $('.checkemail').html("");
        $.ajax({
            type: "GET",
            url: "<?php bloginfo('template_url'); ?>/ajax/check-username.php",
            data: "user=" + user,
            success: function(data){
                $('.checkemail').html(data);
            }
        });
    };
});
</script>
    <div class="form-label">
        <label for="youremail">Email Address <i>*</i></label>
        <small class="checkemail"></small>
    </div>
    <div class="form-input">
        <input type="email" name="youremail" id="youremail" class="input longinput" value="<?php echo $youremail; ?>" />
    </div> <!-- email -->



<?php 
if (strlen($_GET['user']) > 3 && strlen($_GET['user']) <= 30) {
if (username_exists($_GET['user'])) { //sanitizing is done by WordPress
    echo '<span class="checkusererr">This email is already used. Please <label for="lger" style="font-weight:bold;cursor:pointer;">click here log in</label> or enter another one.</span>';
} else {
    echo '<span class="checkuserok">Confirmation with be sent to <span id="youremail-confirm" style="font-weight:bold;"></span></span>';
} 
} ?>

1 Ответ

0 голосов
/ 14 января 2019

Я думаю, что вам нужно привязать ваше событие к контейнеру, и тогда событие всплывет до #youremail. В этом случае вы бы использовали .form-input div. Это просто пример концепции:

$('.form-input').on('keydown', '#youremail', function ()
{
    $('#youremail-confirm').text($(this).val());
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...