表单提交后显示未排列的项目

时间:2019-02-08 17:40:27

标签: javascript node.js

我有一个下拉菜单,该菜单是从这样的数组生成的(为简便起见,在此示例中使用伪数据)

    var city = document.getElementById("city");
    locarr = ["1", "2", "3", "4"];
    for(var i=0; i < locarr.length; i++) {
        var opt = locarr[i];
        var el = document.createElement("option");
        el.text = opt;
        el.value = opt;
        city.add(el);
    }

效果很好,它会填充菜单。但是,当我提交表单并重新加载页面时,我想显示最初选择的项目,然后显示数组中除该项目之外的所有其他项目,因此我没有重复的条目。

我的oldInput.city值来自控制器,这是在表单提交时发布的值。

在当前状态下,提交表单后,我有重复的值。

<select class="chosen-select-no-single" name="city" id="city">
    <% if (!oldInput.city) { %>
    <option value="">Select City</option>
    <% } else { %>
    <option value="">Select City</option>
    <option value="<%= oldInput.city %>" selected>
        <%= oldInput.city %>
    </option>
    <% } %>
</select>

1 个答案:

答案 0 :(得分:2)

只需从HTML中删除oldInput。在for子句中,您可以这样做:

for(var i=0; i < locarr.length; i++) {
    var opt = locarr[i];
    var el = document.createElement("option");
    el.text = opt;
    el.value = opt;
    var oldInpt="<%=oldInput%>";
    if (oldInpt!=null && opt ==oldInpt.city){
       el.selected = true;
    }
    city.add(el);
}