这是我的ASP.NET页面的一部分。
<asp:DropDownList ID="DropDownList1" runat="server"
OnChange="return ListChange(this.value)"
onselectedindexchanged="DropDownList1_SelectedIndexChanged1"
AutoPostBack="True" >
<asp:ListItem Selected="True">Today</asp:ListItem>
<asp:ListItem>Yesterday</asp:ListItem>
<asp:ListItem Value="1">Specific Day</asp:ListItem>
<asp:ListItem>All Time</asp:ListItem>
</asp:DropDownList>
<asp:TextBox ID="txtDate" runat="server"></asp:TextBox>
这是Javascript。
function ListChange(txtVal) {
if (txtVal != 1 ) {
document.getElementById("txtDate").setAttribute("style", "visibility:hidden;");
return true;
}
else {
document.getElementById("txtDate").setAttribute("style", "visibility:visible;");
return false;
}
}
这里的目标是根据用户选择的选项显示某些数据。在特定日期选项中,向用户显示文本框以通过javascript插入日期。但是也会引发调用服务器的onselectedindexchanged
事件。我想在选择“特定日期”选项时停止该事件,但在选择其他选项时运行。
OnChange="return ListChange(this.value)"
上的代码并未停止使用带按钮的表单时使用的事件。
答案 0 :(得分:0)
我建议你做演出&amp;使用.net代码隐藏。
例如在VB.net中
将以下代码放入DropDownList1_SelectedIndexChanged1子目录中。
If DropDownList1.SelectedValue = "1" Then
txtDate.Visible = True
Else
txtDate.Visible = False
End If
而不是在点击/更改事件上有3种不同。
然后删除JS和on change以及客户端点击事件,只需将其保留为onselectedindexchanged =“DropDownList1_SelectedIndexChanged1”
<强>更新强>
如果您想避免代码中某些事件的回发,请执行以下操作:
如果isPostBack = True
//不要填写表单
否则
//填写表单
结束如果
答案 1 :(得分:0)
这是您可以使用的选项之一。
答案 2 :(得分:0)
您无需同时调用两个单独的功能。这里有一些jquery代码可以在几行中完成。
$(document).ready(function(){
$('#DropDownList1').change(fnction(){
if($(this).text() != 'Specific Day') {
document.getElementById("txtDate").setAttribute("style", "visibility:hidden;");
return true;
} else {
document.getElementById("txtDate").setAttribute("style", "visibility:visible;");
return false;
}
});
});
答案 3 :(得分:0)
默认情况下,如果您提供AutoPostBack = true,ASP.Net将回发。
不考虑返回值。
以下是执行时呈现的代码。它使用settimeout并执行_doPostBack来提交表单
onchange="return ListChange(this);setTimeout('__doPostBack(\'ctl00$MainContent$DropDownList1\',\'\')', 0)"
我们需要考虑通过设置类似Page_IsValid = false的标志来停止表单提交;
答案 4 :(得分:0)
首先尝试检查javascript函数中的值。
如果未显示selceted值,请使用以下代码
var index = document.getElementById(selectItem).selectedIndex;
alert("value =" + document.getElementById(selectItem).value);
alert("text =" + document.getElementById(selectItem).options[index].text);
或使用jQuery
$(&#34; #yourdropdownid选项:已选择&#34;)。text();