jQuery / javascript和嵌套的if语句

时间:2010-03-31 14:35:46

标签: javascript jquery validation

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

5 个答案:

答案 0 :(得分:5)

  

jQuery / javascript甚至是recnogize嵌套ifs?

是的,他们

答案 1 :(得分:2)

Javascript区分大小写,也许您的#lang元素的值可能不同。你可以像这样强迫它降低......

var lang = $("#lang").val().toLowerCase(); 

答案 2 :(得分:2)

值得检查的一件事会导致此行为,即您的网页上没有id = lang的任何其他元素。如果有,您的$("#lang")选择器只会找到第一个,如果这不是您的隐藏输入,它将无法正常工作。

答案 3 :(得分:1)

为什么不识别嵌套if?

您可以在页面中添加HTML吗?这个javascript似乎没有任何问题 - 所以我觉得这个问题与页面的其余部分有关。

除此之外,在if语句之前放置一个警告(lang)以查看它的设置。我的猜测是,它不会被设置为您认为应该设置的值。

答案 4 :(得分:1)

检查值

alert("'" + lang + "' :" + lang.length);