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