2010-03-31 3 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; 
}); }); 

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

+0

Да, вложенные положения 'if' действительны. –

+0

Определите значение 'lang' после его установки. Правильно ли он установлен на 'de'? – Aaron

+0

Вы искали ошибки в firebug? http://getfirebug.com/ – Samuel

ответ

2

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

5

Является ли jQuery/javascript даже recnogize вложенным ifs?

Да они

1

Почему бы не признавали вложенный ИФ?

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

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

+0

Спасибо за подсказку - я сделал это, и я получил пустое предупреждение. Очевидно, значение #lang не передается в jQuery, но я не понимаю, потому что, когда я смотрю на исходный код HTML-формы, очевидно, что скрытое поле с id #lang и значением 'en' (или 'de'). – rayne

+0

Является ли «id» элемента «lang» или «#lang»? – Pointy

+0

Просто, конечно, исходный код выглядит следующим образом: '' – rayne

2

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

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

Это все в нижнем регистре, но спасибо за полезный намек! – rayne

1

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

alert("'" + lang + "' :" + lang.length); 
Смежные вопросы