我有一个多语言页面,我想在其中以用户的语言显示表单验证错误。我使用隐藏的输入来确定用户正在浏览的语言版本,如下所示:<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甚至可以识别嵌套的ifs吗?如果是,为什么它不起作用?

最佳答案

值得一提的是,会导致此行为的一件事是,您的页面上没有ID = lang的其他任何元素。如果存在,您的$("#lang")选择器将仅找到第一个,如果不是您的隐藏输入,它将无法按您预期的那样工作。

07-24 17:54
查看更多