下拉框中的文本将其他文本字段设置为禁用
Text in drop down sets other text fields as disabled
我有一个包含多个字段的ASPX表单。
有问题的字段(下拉框)被选中时应该禁用另一个下拉框和文本框,但由于某种原因它不起作用
我做错了什么?
<td class="td"><asp:DropDownList ID="DeliveryTypeList" runat="server" AutoPostBack="true" onchange="javascript:changeTextFields();"></asp:DropDownList></td>
我的javascript是:
<script type = "text/javascript">
function changeTextFields() {
var val = document.getElementById("DeliveryTypeList").text;
if (val == "PO Box 110") {document.getElementById("ReceivedFrom").disabled = false; document.getElementById("ReferenceNumber").disabled = false }
if (val == "Courier Delivery") { document.getElementById("ReceivedFrom").disabled = true; document.getElementById("ReferenceNumber").disabled = false }
}
您的客户端代码可能很好,但您的问题是AutoPostback = true
上的DeliveryTypeList
。此设置导致客户端在选定索引更改时向服务器发布,因此changeTextFields
中的代码无关。
如果你需要AutoPostback = true
,那么你必须在服务器端添加一些额外的逻辑来执行你的客户端代码的回发
下拉列表的id永远不会相同,因为它是一个服务器端控件。在Java脚本中使用class代替。
检查当下拉选择的值改变时隐藏div
用于类似的问题。
为了维护客户端状态,您需要在从服务器返回页面加载后调用该脚本。
因为你正在使用javascript,你可以使用e.options[e.selectedIndex].value
来检索下拉列表的选定值。
我的想法:与javascript相比,使用jQuery会更容易选择DOM。
<asp:DropDownList ID="DeliveryTypeList" runat="server"
AutoPostBack="true" onchange="javascript:changeTextFields();">
<asp:ListItem Text="PO Box 110" Value="PO Box 110" />
<asp:ListItem Text="Courier Delivery" Value="Courier Delivery" />
</asp:DropDownList>
<asp:DropDownList ID="ReceivedFrom" runat="server">
</asp:DropDownList>
<asp:TextBox ID="ReferenceNumber" runat="server" />
<script type="text/javascript">
function changeTextFields() {
var e = document.getElementById('<%= DeliveryTypeList.ClientID %>');
var val = e.options[e.selectedIndex].value;
if (val == "PO Box 110") {
alert(val);
document.getElementById('<%= ReceivedFrom.ClientID %>').disabled = false;
document.getElementById('<%= ReferenceNumber.ClientID %>').disabled = false;
}
if (val == "Courier Delivery") {
alert(val);
document.getElementById('<%= ReceivedFrom.ClientID %>').disabled = true;
document.getElementById('<%= ReferenceNumber.ClientID %>').disabled = false;
}
}
// Call at page load
changeTextFields();
</script>
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 当设置addFromAutocompleteOnly时,剩余文本将保留在输入字段中
- 使用jquery将输入字段转换为文本
- 如何从查询字符串中的输入字段发回文本
- 表单输入字段随着溢出的文本而增长
- 使用单个文本框向多个字段添加严格搜索
- 使用javascript提交表单并从字段/单选框/复选框/文本区域获取数据
- 使用jQuery的输入字段文本换行
- 向使用jQuery加载DOM后添加的字段添加不受限制的文本输入DatePickers
- 当用户单击按钮(在光标位置)时,在输入字段中添加一个文本字符串
- 如何根据文本长度立即显示和隐藏字段?-JQuery
- 如何使文本、数字和日期html输入字段以一致的方式支持Ctrl+Z(撤消)
- 模拟文本输入字段上的退格键
- 输入字段中的可持续文本
- 未获取文本输入字段的值
- 没有文本安全性的密码字段
- 将禁用的输出字段更改为带前缀的文本
- 为什么 react 将输入[类型=“文本”] 字段设为只读,除非我提供 onChange 回调
- 使用SAPUI5中的“文本”字段显示正确的“日期”
- Kendo,如何将MVVM文本:字段绑定到远程DataSource