0

我正在使用以下代码以 html 形式开发下拉列表。

<html:select property="complaintCategory" onchange="showfield(this.options[this.selectedIndex].value)" >
<html:option value="option1">option1</html:option>
<html:option value="option2">option2</html:option>
<html:option value="option3">option3</html:option>
<html:option value="Other">Other</html:option>
</html:select>
<div id="div1"></div>

我想创建一个文本框,以便用户在选择其他选项时可以写一些东西。函数 showField(name) 正在创建新的文本框。

function showfield(name)
    {
        if(name=='Other')document.getElementById('div1').innerHTML='<input type="text" name="complaintCategory" />';
        else document.getElementById('div1').innerHTML='';
    }

我面临的问题是,当我从下拉列表中选择“其他”选项然后在上面写一些东西时,它不会保存文本,它只保存为值Other。我想将文本框中的文本作为投诉类别传递。真的很感谢有人在这方面的帮助,我被困住了。

提前致谢...

4

1 回答 1

0

(我正在研究<html:select property="complaintCategory"将输出的假设<select name="complaintCategory"。将问题缩小到服务器端代码或客户端代码并仅提供其中一个通常会有所帮助。)

当您提交表单时(选择其他后),您将有2 个具有相同名称的元素。

无论您使用什么服务器端代码来读取提交的表单数据,它似乎都采用了第一个值。

任何一个:

  1. 修改您的服务器端代码以获取第二个值(我不知道您用于解析表单数据的 API,因此无法告诉您具体内容)
  2. 通过不同的名称和 if 语句调用生成的输入。

例如

客户端:

if(name=='Other')document.getElementById('div1').innerHTML='<input type="text" name="otherComplaintCategory" />';

服务器端(伪代码):

IF complaintCategory is "Other":
THEN complaintCategory = otherComplaintCategory
于 2013-01-24T12:51:36.067 回答