更新:
我编辑我的代码:
现在好像它将值(en,zh-tw)发布到/i18n/setlang/
我想是因为我有for loop
我该怎么编辑?
请帮助我非常感谢!!
<style>
#dropmenu {
margin: 10px;
padding: 10px;
/*border: 2px solid purple;*/
/*width: 200px;*/
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}
#dropmenu > ul { display: none; }
#dropmenu:hover > ul {display: block; background: #f9f9f9; }
#dropmenu:hover > ul > li { padding: 5px; }
#dropmenu:hover > ul > li:hover { background: white;}
#dropmenu:hover > ul > li:hover > a { color: red; }
</style>
<script type="text/javascript">
function selectdo(obj) {
str="/i18n/setlang/";
myform = document.getElementById('testform');
myform.method = "POST";
myform.action = str;
myform.submit();
}
</script>
<ul id="header">
<li data-menuanchor="firstPage"><a href="{% url 'core:maininfo' %}#firstPage">HOME</a>
</li>
<li data-menuanchor="secondPage"><a href="{% url 'core:maininfo' %}#secondPage">Note</a>
</li>
<li>
<div id='dropmenu'>
<img src="{% static 'img/lan.png' %}" />
<ul>
{% get_available_languages as LANGUAGES %}
<form name="testform" id="testform" method='post'>
{% csrf_token %}
{% for lang in LANGUAGES %}
<input name="language" type="hidden" value="{{ lang.0 }}" id="lang"/>
<li value="{{ lang.0 }}" ><a href="#" onclick="selectdo(); return false;" > {{ lang.1 }}</a></li>
{% endfor %}
</form>
</ul>
</div>
</li>
</ul>
原始问题:
<ul id="header">
<li data-menuanchor="firstPage"><a href="{% url 'core:maininfo' %}#firstPage">HOME</a>
</li>
<li data-menuanchor="secondPage"><a href="{% url 'core:maininfo' %}#secondPage">Note</a>
</li>
<li>
<img src="{% static 'img/lang.png' %}" />
</li>
<li>
{% get_available_languages as LANGUAGES %}
<form name="testform" id="testform" method='post'>
{% csrf_token %}
<select id="language" name="language" onchange="selectdo(this)">
<option value="1" >{% trans "Languages" %}</option>
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}" > {{ lang.1 }}</option>
{% endfor %}
</select>
</form>
</li>
</ul>
我有一个选择更改语言的选项
现在我想合并<img src="{% static 'img/lang.png' %}" />
和<form name="testform" id="testform" method='post'>
部分
如果用户点击图像,它将跳转语言(中文和英文)供用户选择,如下拉菜单
请指导我怎么做,谢谢!
答案 0 :(得分:0)
我认为这是因为for循环。它创建了两个具有相同ID的input
元素,并且值设置为{{ lang.0 }}
,因此当您发布时,它会发布两种语言。您应该有1个input
元素,其中包含要发布的值。
尝试修改ul
以将输入置于循环之外,并为onclick="selectdo();"
设置参数:
<ul>
{% get_available_languages as LANGUAGES %}
<form name="testform" id="testform" method='post'>
<input name="language" type="hidden" id="lang"/>
{% csrf_token %}
{% for lang in LANGUAGES %}
<li value="{{ lang.0 }}" ><a href="#" onclick="selectdo('{{ lang.0 }}'); return false;" > {{ lang.1 }}</a></li>
{% endfor %}
</form>
</ul>
然后修改javascript函数以在发布之前设置输入:
function selectdo(obj) {
var langInput = document.getElementById('lang');
langInput.value = obj;
str="/i18n/setlang/";
myform = document.getElementById('testform');
myform.method = "POST";
myform.action = str;
myform.submit();
}