0

如何让我的选择列表填充来自用户输入的新选项?

到目前为止,这是我的 JS:

<script type="text/javascript">
function show_prompt() {
    var name = prompt('Please enter new origin');
    if (name != null && name != "") {
      var select = document.getElementById("OriginSelect");
      select.options[select.options.length] = new Option('Text 1', 'Value1');
    }
}

这是正文下方的 HTML\Coldfusion:

<p class="_30NP" align="right">
                                <label>Origin&nbsp;</label>
                            </p>

                            <p class="_20NP">
                              <cfselect  name="OriginSelect" id="OriginSelect" query="Origin" display="description" value="code"  required="yes">
                              <option id="new" value="new" onClick="show_prompt()">New Origin</option>
                              </cfselect>
                            </p>

                            <a href="#" onClick="show_prompt()">New Origin</a>

所以基本上,列表是从数据库中填充的,但是当没有合适的 Origin 可用时,用户可以单击 href 并出现一个带有文本字段的提示框(这很好用)。然后用户可以输入他喜欢的任何内容,然后 JS 脚本将新元素添加到标签中。

但是,在用户输入文本并执行“确定”时点击“确定”后,它不会执行任何操作。Chrome 中的 javascript 调试器也没有显示任何有用的信息,也没有标记任何错误或任何内容。

它是一个 cfselect 的事实是一个问题吗?我自己手动添加了一个选项(id="new"),它显示得很好。

编辑:好的,这不是 cfselect 的错。我把它变成了一个普通的选择框,它仍然不起作用..

4

1 回答 1

0

使用appendChild功能

function show_prompt() {
    var name = prompt('Please enter new origin');
    if (name != null && name != "") {
      var select = document.getElementById("OriginSelect");
      var option = new Option(name);
      select.appendChild(option);
    }
}
于 2013-03-05T20:49:58.357 回答