2010-03-31 49 views
1

我有一個多語言頁面,我想用用戶的語言顯示錶單驗證錯誤。我使用隱藏的輸入來確定用戶正在瀏覽哪種語言版本,如下所示:<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

回答

2

有一兩件事值得一試,將導致此行爲是你沒有任何其他的元素頁面id = lang。如果有的話,你的$("#lang")選擇器將只能找到第一個,如果這不是你的隱藏輸入,它將不會像你期望的那樣工作。

5

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

是他們

1

爲什麼不是識別嵌套的,如果的?

您可以包括頁面的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

2

JavaScript是區分大小寫的,或許你#lang元素的值是在不同的情況下。你可以迫使它降低這樣的... ...

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

這是全部小寫,但謝謝你的幫助提示! – rayne 2010-03-31 14:49:55

1

檢查值

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