JavaScript:是不是可以动态地将 <input> 更改为 <select> 元素并再次返回?

Posted

技术标签:

【中文标题】JavaScript:是不是可以动态地将 <input> 更改为 <select> 元素并再次返回?【英文标题】:JavaScript: is it possible to dynamically change an <input> to a <select> element and back again?JavaScript:是否可以动态地将 <input> 更改为 <select> 元素并再次返回? 【发布时间】:2012-06-23 05:43:43 【问题描述】:

我正在使用“Zen Cart”购物车。默认设置是让访问者选择国家和动态填充“州”。如果他们选择了一个没有定义州的国家,下拉菜单会显示“在下面输入您的州”,并且会动态显示一个输入框。

如果为该国家/地区定义了州,则当前的方式很好,但如果没有,那么将下拉菜单显示为文本输入而不是显示新的文本输入会更好。

如果没有选择,我可以动态地将下拉菜单更改为文本输入吗?而且,如果没有启用 javascript,它可以默认为文本输入吗?

我看到这个问题:Change select to input on selection of country?

但我没有得到 jQuery 参考。 :(

【问题讨论】:

jQuery 基本上是一个javascript库jquery.com 所以真正的问题是,“什么是 jQuery”。我回答google.com?q=jquery。 不,如果那是真正的问题,那么这就是问题所在。 我收回了。那应该是我的问题。确实最有启发性! 【参考方案1】:

还有另一种可能的实现方式:

您在 html 中添加 INPUT 和 SELECT 元素。

如果您定义了 STATES,则输入 display: none; 并添加变体以选择到您的 SELECT 中;否则,您选择display: none;,因此用户可以看到输入。

它易于实施和使用,对用户来说很清楚。

【讨论】:

页面加载时没有“display:none”的那个。 JS 很酷,但你也需要考虑 CSS 部分。【参考方案2】:

文本输入放入HTML。如果选择了具有州的国家/地区,请将 input 替换为具有州(或地区或省或其他)的 select 元素。如果 JavaScript 未启用或不可用,则用户手动进入状态。

类似:

<select name="country" onchange="updateState(this);">
  <option value="country0">country0
  <option vlaue="country1">country1
  <option>country...
</select>
...
<input type="text" name="state">


<script>
  function updateState(element) 
    if ( /* element.value has states */) 
      // replace ths.form.state with a select
      // of appropriate states
     else 
      // replace this.form.state with a text input
    
  
</script>

else 块是必需的,因为用户可以选择一个有州的国家,然后选择一个没有州的国家。以上有一些变化(例如切换显示而不是替换),选择任何适合的。

【讨论】:

以上是关于JavaScript:是不是可以动态地将 <input> 更改为 <select> 元素并再次返回?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 检查并在提交按钮单击时动态地将文本添加到表格中

javascript/jQuery:如何动态地将属性值转换为对象键? [复制]

Javascript动态地将函数附加到对象

javascript 动态地将HTML添加到字符串

将数据动态添加到 javascript 地图

正确地将 Groovy 列表传递给 GSP 中的 Javascript 代码