【发布时间】:2017-02-16 10:34:31
【问题描述】:
我有一个带有“不适用”、“不可用”、“离开”和“可用”选项的 RadioButtonList。
-
我在服务器端单击 RadioButtonList 中的“离开”时会抛出确认消息框,如下所示
protected void rdlUser_SelectedIndexChanged(object sender, EventArgs e) { radWindowManager.RadConfirm("Are you sure you want to take leave?", "confirmLeave" + this.ClientID, 300, 100, null, ""); } 如果用户点击“取消”,那么它会自动选择“可用”,代码如下。
以下是“确定”或“取消”离开的 javascript 代码。
function confirmLeave<%=this.ClientID%>(arg) {
if (arg == true) {
alert("User has selected Leave.")
}
else {
var rdlUser = docment.getElementById("<%= rdlUser.ClientID %>");
var radioButtons = rdlUser.getElementsByTagName('input');
radioButtons[1].checked = true;
}
}
如果用户第二次点击“离开”,SelectedIndexChanged 根本不会触发。
我也可以灵活地将服务器端代码移动到客户端。
更新
以下是相关的HTML代码
<table id="ctl00_ContentPlaceHolder1_MyUser_MyMonday_rdlUser">
<tr>
<td><span class="leave"><input id="ctl00_ContentPlaceHolder1_MyUser_MyMonday_rdlUser_0" type="radio" name="ctl00$ContentPlaceHolder1$MyUser$MyMonday$rdlUser" value="SLOT01" disabled="disabled" onclick="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$MyUser$MyMonday$rdlUser$0\',\'\')', 0)" /><label for="ctl00_ContentPlaceHolder1_MyUser_MyMonday_rdlUser_0">Not Applicable</label></span></td>
<td><span class="leave"><input id="ctl00_ContentPlaceHolder1_MyUser_MyMonday_rdlUser_1" class="Leave" type="radio" name="ctl00$ContentPlaceHolder1$MyUser$MyMonday$rdlUser" value="SLOT02" onclick="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$MyUser$MyMonday$rdlUser$1\',\'\')', 0)" /><label for="ctl00_ContentPlaceHolder1_MyUser_MyMonday_rdlUser_1">Not Available</label></span></td>
</tr><tr>
<td><span class="leave"><input id="ctl00_ContentPlaceHolder1_MyUser_MyMonday_rdlUser_2" class="Leave" type="radio" name="ctl00$ContentPlaceHolder1$MyUser$MyMonday$rdlUser" value="SLOT03" onclick="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$MyUser$MyMonday$rdlUser$2\',\'\')', 0)" /><label for="ctl00_ContentPlaceHolder1_MyUser_MyMonday_rdlUser_2">Leave</label></span></td>
</tr><tr>
<td><span class="available"><input id="ctl00_ContentPlaceHolder1_MyUser_MyMonday_rdlUser_3" class="Available" type="radio" name="ctl00$ContentPlaceHolder1$MyUser$MyMonday$rdlUser" value="SLOT04" checked="checked" /><label for="ctl00_ContentPlaceHolder1_MyUser_MyMonday_rdlUser_3">Available</label></span></td>
</tr>
更新 2
我被困在这里——我需要将 RadioButtonList 的 this.ClientID 指向 jQuery 的 $this。而已。在那里我可以执行@smoksnes 提供的第二个答案
更新 3
如果用户选择“不可用”或“请假”,那么它应该抛出错误消息“您想请假吗?”如果他选择“取消”,那么 RadioButtonList 的选择应该指向“可用”。否则它应该相应地选择“不可用”或“离开”。
【问题讨论】:
-
可能是因为单选按钮在第一次单击后仍处于选中状态。这意味着第二次单选按钮的值不会改变。如果用户未确认,请尝试将值更改回可用。
-
这就是我现在正在做的事情
var rdlUser = docment.getElementById("<%= rdlUser.ClientID %>"); var radioButtons = rdlUser.getElementsByTagName('input'); radioButtons[1].checked = true;在confirmLeave 的else 部分。 -
尝试在客户端使用事件监听器而不是回发。像这样的东西:
$('#<%=this.ClientID%>').change(function(){//code here}); -
能不能说的详细点?
-
@CPK_2011 - 是的,我将其发布为答案,因为它渴望发表评论。如果我误解了这个问题,请告诉我。
标签: javascript jquery asp.net telerik