jQuery / javascript и вложенные операторы if - PullRequest
1 голос
/ 31 марта 2010

У меня есть многоязычная страница, на которой я хочу отобразить ошибку проверки формы на языке пользователя. Я использую скрытый ввод, чтобы определить, какую языковую версию просматривает пользователь следующим образом: <input type="hidden" name="lang" id="lang" value="<?php echo $lang; ?>" />

PHP-сценарий работает, но jQuery, похоже, не понимает, какой язык передается. Он отображает сообщение об ошибке на английском языке независимо от того, на каком языке я на сайте.

Вот код (я удалил другие поля формы для длины):

$(document).ready(function(){
    $('#contact').submit(function() {
        $(".form_message").hide();
            var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
            var lang = $("#lang").val();
            var name = $("#name").val();
            var dataString = {
                        'lang': lang,
                        'name': name
                         }
                if (name == '') {
                    if (lang == 'de') {
                        $("#posted").after('<div class="form_message"><p><span class="error">Fehler:</span> Bitte gib deinen Namen an!</p></div>');
                    } else {
                        $("#posted").after('<div class="form_message"><p><span class="error">Error:</span> Please enter your name!</p></div>');
                    }
                    $("#name").focus();
                    $("#name").addClass('req');
                    } else  {
                    $("#loading").show();
                    $("#loading").fadeIn(400).html('<img src="/img/loading.gif" />Loading...');
                    $.ajax({
                    type: "POST",
                    url: "/contact-post.php",
                    data: dataString,
                    cache: false,
                    success: function(html){
                    $("#loading").hide();
                    $("#posted").after('<div class="form_message"><p>Thank you! Your contact request has been sent.</p></div>');
                    $("#contact input:submit").attr("disabled", "disabled").val("Success!");
                    }
            });
        }return false;
}); });

Проблема, кажется, где-то во вложенном операторе if. JQuery / javascript распознает даже вложенные if? И если да, то почему он не работает?

Ответы [ 5 ]

5 голосов
/ 31 марта 2010

jQuery / javascript даже распознает вложенные ifs?

Да, они делают

2 голосов
/ 31 марта 2010

Стоит проверить, что могло бы вызвать такое поведение: на вашей странице нет других элементов с id = lang. Если это так, ваш $("#lang") селектор найдет только первый, а если это не ваш скрытый ввод, он не будет работать, как вы ожидаете.

2 голосов
/ 31 марта 2010

Javascript чувствителен к регистру, и, возможно, значение вашего элемента #lang находится в другом регистре. Вы можете заставить его опуститься вот так ...

var lang = $("#lang").val().toLowerCase(); 
1 голос
/ 31 марта 2010

Проверьте значение

alert("'" + lang + "' :" + lang.length);
1 голос
/ 31 марта 2010

Почему он не может распознать вложенные if?

Можете ли вы включить HTML для страницы? Похоже, что с этим javascript все в порядке, поэтому у меня такое чувство, что проблема в остальной части страницы.

Запретив это, поместите предупреждение (lang) прямо перед оператором if, чтобы увидеть, на что оно установлено. Я предполагаю, что для него не будет установлено значение, которое, по вашему мнению, должно быть установлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...