我有一个多语言页面,我想在其中以用户的语言显示表单验证错误。我使用隐藏的输入来确定用户正在浏览的语言版本,如下所示:<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")
选择器将仅找到第一个,如果不是您的隐藏输入,它将无法按您预期的那样工作。