我有一个包含 5 个项目的下拉列表。最后一项的值为“其他”。通过选择“其他”出现带有输入的弹出窗口。我通过 javascript 将此输入的值设置为此项目。所以 value 变成了插入的文本。当我提交表单时,它不适用于此动态值,但其他选择项有效。有任何想法吗?非常感谢!
问问题
7317 次
3 回答
4
这是一个使用 Request.Params 集合读取动态附加值的快速示例。
这是客户端代码。
<!-- Server Control - Drop Down List -->
<asp:DropDownList ID="ddList" runat="server">
<asp:ListItem Text="A" Value="A"></asp:ListItem>
<asp:ListItem Text="B" Value="B"></asp:ListItem>
<asp:ListItem Text="C" Value="C"></asp:ListItem>
</asp:DropDownList>
<!-- Control to fire JS event to add a new item to the Drop Down List above -->
<input type="button" value="Add Item D" id="AddItem" />
<!-- jQuery event to add a new option to the list on the click (no postback) -->
$('#AddItem').click(function ()
{
$('#<%= ddList.ClientID %>').append('<option value="D">D</option>');
});
这是读取值的服务器端代码。
var ddlListSelectedValue = Request.Params["ddList"];
于 2012-05-08T16:35:47.567 回答
2
而不是将此值设置为下拉列表项值,您可以使用隐藏字段
<input type="hidden" id="hiddenField" runat="server" />
使用 JavaScript 设置值如下
document.getElementById ("hiddenField").value = "inputValue";
hiddenField 值可以从后面的代码中访问,如下所示
string inputValue = hiddenField.Value;
于 2012-05-08T15:10:46.373 回答
1
只需更新您的功能
$('#AddItem').click(function ()
{
var dropdown= document.getElementById("<%= ddList.ClientID %>");
dropdown.options[dropdown.options.length] = new Option('YOUR TEXT', 'YOUR VALUE');
});
干杯
我自己测试过,它有效。下面是一个完整的例子:
<html>
<head>
<title>Test ddl Item Addition By IuR</title>
</head>
<body onload="add_dditem()">
<script type="text/javascript">
function add_dditem()
{
var dropdown= document.getElementById("ddList");
dropdown.options[dropdown.options.length] = new Option('YOUR TEXT', 'YOUR VALUE');
}
</script>
<select id="ddList">
</select>
</body>
</html>
于 2012-05-10T10:44:41.113 回答