Javascript 基于页面的语言下拉列表
我有一个带有语言选项的简单选择框。每个选项将根据所选语言加载不同的页面。导航可以工作,但我需要基于页面ID的默认选定项,该ID是使用PHP设置的 我已经在页面上加载了jQuery1.12,以便在需要时可以使用该库Javascript 基于页面的语言下拉列表,javascript,php,jquery,Javascript,Php,Jquery,我有一个带有语言选项的简单选择框。每个选项将根据所选语言加载不同的页面。导航可以工作,但我需要基于页面ID的默认选定项,该ID是使用PHP设置的 我已经在页面上加载了jQuery1.12,以便在需要时可以使用该库 <?php $body_id = "en"; ?> <form id="language" method="post"> <select class="language" onchange="window.location.href=th
<?php
$body_id = "en";
?>
<form id="language" method="post">
<select class="language" onchange="window.location.href=this.value">
<option selected="selected">LANGUAGE</option>
<option value="index-da.php">DANSK</option>
<option value="index-de.php">DEUTSCH</option>
<option value="index.php">ENGLISH</option>
<option value="index-es.php">ESPAÑOL</option>
<option value="index-fr.php">FRANÇAIS</option>
<option value="index-it.php">ITALIANO</option>
<option value="index-pl.php">POLSKI</option>
</select>
</form>
使用过滤器获取目标选项元素,并根据选项的值应用条件
var$body_id=en;
var filtered=$'.language'.find'option'.filterfunction{
返回此.value.split'.[0]。split'-'[1]=$body\u id;
};
如果已过滤,则为0.1长度{
过滤。道具“已选择”,为真;
}否则{
$'.language'.find'option[value=index.php]'.prop'selected',true;
}
语言
丹斯克
德国
英语
ESPA&209;OL
FRAN&199;人工智能
意大利语
波尔斯基
使用过滤器获取目标选项元素,并根据选项的值应用条件
var$body_id=en;
var filtered=$'.language'.find'option'.filterfunction{
返回此.value.split'.[0]。split'-'[1]=$body\u id;
};
如果已过滤,则为0.1长度{
过滤。道具“已选择”,为真;
}否则{
$'.language'.find'option[value=index.php]'.prop'selected',true;
}
语言
丹斯克
德国
英语
ESPA&209;OL
FRAN&199;人工智能
意大利语
波尔斯基
你不必到处重复你自己,你只需要制作一个语言数组,并在迭代中回显你的模板,然后检查$\u服务器['SCRIPT\u NAME'],看看它是否相等,如果相等,就将它设置为选中
<?php
$languages = array(
'da' => 'DANSK',
'de' => 'DEUTSCH',
'en' => 'ENGLISH',
'es' => 'ESPAÑOL',
'fr' => 'FRANÇAIS',
'it' => 'ITALIANO',
'pl' => 'POLSKI'
);
?>
<form id="language" method="post">
<select class="language" onchange="window.location.href=this.value">
<option selected="selected" disabled>LANGUAGE</option>
<?php
foreach ($languages as $code => $language){
$page = "index-$code.php";
if (basename($_SERVER['SCRIPT_NAME']) === $page)
$selected = 'selected="selected"';
else
$selected = '';
echo "<option value='$page' $selected>$language</option>".PHP_EOL;
}
?>
</select>
</form>
你不必到处重复你自己,你只需要制作一个语言数组,并在迭代中回显你的模板,然后检查$\u服务器['SCRIPT\u NAME'],看看它是否相等,如果相等,就将它设置为选中
<?php
$languages = array(
'da' => 'DANSK',
'de' => 'DEUTSCH',
'en' => 'ENGLISH',
'es' => 'ESPAÑOL',
'fr' => 'FRANÇAIS',
'it' => 'ITALIANO',
'pl' => 'POLSKI'
);
?>
<form id="language" method="post">
<select class="language" onchange="window.location.href=this.value">
<option selected="selected" disabled>LANGUAGE</option>
<?php
foreach ($languages as $code => $language){
$page = "index-$code.php";
if (basename($_SERVER['SCRIPT_NAME']) === $page)
$selected = 'selected="selected"';
else
$selected = '';
echo "<option value='$page' $selected>$language</option>".PHP_EOL;
}
?>
</select>
</form>
这样做会更灵活:
<?php
$body_id = !empty($_POST['lang']) ? $_POST['lang'] : '';
$options = array
(
'da' => 'Dansk',
'de' => 'Deutsch',
'en' => 'English',
'es' => 'Español',
'fr' => 'Français',
'it' => 'Italiano',
'pl' => 'Polski'
);
?>
<form action="<?=getenv('PHP_SELF')?>" method="post">
<select name="lang" onchange="this.form.submit()">
<option>Language</option>
<?php foreach ($options as $key => $val):?>
<option value="<?=$key?>"<?=($key == $body_id ? 'selected' : '')?>><?=htmlentities($val)?></option>
<?php endforeach?>
</select>
</form>
这样做会更灵活:
<?php
$body_id = !empty($_POST['lang']) ? $_POST['lang'] : '';
$options = array
(
'da' => 'Dansk',
'de' => 'Deutsch',
'en' => 'English',
'es' => 'Español',
'fr' => 'Français',
'it' => 'Italiano',
'pl' => 'Polski'
);
?>
<form action="<?=getenv('PHP_SELF')?>" method="post">
<select name="lang" onchange="this.form.submit()">
<option>Language</option>
<?php foreach ($options as $key => $val):?>
<option value="<?=$key?>"<?=($key == $body_id ? 'selected' : '')?>><?=htmlentities($val)?></option>
<?php endforeach?>
</select>
</form>
$body_id与options中的任何内容都不匹配是的,我没有写过,因为我不知道需要写什么。我假设jQuery中有东西调用$body\u id并将所选属性添加到选项中。$body\u id与options中的任何内容都不匹配是的,我没有写过,因为我不知道需要写什么。我假设jQuery中有东西调用$body_id并将所选属性添加到选项中。谢谢!不幸的是,这总是将英语设置为所选语言。如果用户访问意大利语页面,则需要选择意大利语选项。每个页面都有一个$body\u id集。英语是英语。德为德语。这是意大利语。等等,啊,我明白了!第一个var需要出现在每一页上!“非常好用,谢谢你,先生。”克里斯卡瑟,我很高兴它帮了大忙,伙计!愉快的编码奖金回合,我能有一行调用PHP变量而不是在每个页面上再次声明它吗?@ChrisCather,var$body_id=将解决这个问题!谢谢人造丝!不幸的是,这总是将英语设置为所选语言。如果用户访问意大利语页面,则需要选择意大利语选项。每个页面都有一个$body\u id集。英语是英语。德为德语。这是意大利语。等等,啊,我明白了!第一个var需要出现在每一页上!“非常好用,谢谢你,先生。”克里斯卡瑟,我很高兴它帮了大忙,伙计!愉快的编码奖金回合,我能有一行调用PHP变量而不是在每个页面上再次声明它吗?@ChrisCather,var$body_id=将解决这个问题!