dropdownmenu与图像和形式

时间:2014-12-04 06:03:22

标签: jquery python css django

更新:

我编辑我的代码:
现在好像它将值(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'>部分 如果用户点击图像,它将跳转语言(中文和英文)供用户选择,如下拉菜单 请指导我怎么做,谢谢!

1 个答案:

答案 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();
}