jQuery/JavaScript和嵌套if语句

问题描述:

我有一个多语言页面,我想用用户的语言显示表单验证错误。我使用隐藏的输入来确定用户正在浏览哪种语言版本,如下所示:<input type="hidden" name="lang" id="lang" value="<?php echo $lang; ?>" />jQuery/JavaScript和嵌套if语句

脚本的PHP一侧工作,但jQuery似乎并未意识到传递哪种语言。无论我在哪个语言网站上显示英文错误消息。

下面的代码(我删除了长度其他表单字段):

$(document).ready(function(){ 
    $('#contact').submit(function() { 
     $(".form_message").hide(); 
      var emailReg = /^([\w-\.][email protected]([\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吗?如果是的话,为什么它不起作用?

+0

是嵌套的'if'子句是有效的。 – 2010-03-31 14:38:36

+0

设置后找出'lang'的值。它是否被正确设置为'de'? – Aaron 2010-03-31 14:39:22

+0

你在找萤火虫的错误吗? http://getfirebug.com/ – Samuel 2010-03-31 14:44:52

有一两件事值得一试,将导致此行为是你没有任何其他的元素页面id = lang。如果有的话,你的$("#lang")选择器将只能找到第一个,如果这不是你的隐藏输入,它将不会像你期望的那样工作。

是否jQuery的/ JavaScript的甚至recnogize嵌套IFS?

是他们

为什么不是识别嵌套的,如果的?

您可以包括页面的HTML?这个javascript根本没有出现任何问题 - 所以我有一个感觉是问题与页面的其他部分有关。

除非是,放在右警报(郎)你的if语句之前,看看它设置为。我的猜测是,它不会被设置为您认为应该设置的值。

+0

感谢您的提示 - 我做到了,我得到一个空警报。很明显,#lang的价值并没有传递给jQuery,但我不明白为什么,因为当我查看表单的html源代码时,显然存在一个隐藏字段,其ID为#lang,值为'en'(或'de')。 – rayne 2010-03-31 14:49:33

+0

是元素“lang”还是“#lang”的“id”?当然 – Pointy 2010-03-31 14:50:50

+0

刚郎,源代码如下:'' – rayne 2010-03-31 14:52:00

JavaScript是区分大小写的,或许你#lang元素的值是在不同的情况下。你可以迫使它降低这样的... ...

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

这是全部小写,但谢谢你的帮助提示! – rayne 2010-03-31 14:49:55

检查值

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