クリックイベントを使用しないのはなぜですか? これは、クライアント側のポストバック イベントがバインドされる方法です。たとえば、「MyButtonList」という RadioButtonList がある場合、次の HTML がレンダリングされます。
<table id="MyButtonList" border="0">
<tr>
<td><input id="MyButtonList_0" type="radio" name="MyButtonList" value="1" checked="checked" /><label for="MyButtonList_0">Hello World</label></td>
</tr><tr>
<td><input id="MyButtonList_1" type="radio" name="MyButtonList" value="2" onclick="javascript:setTimeout('__doPostBack(\'MyButtonList$1\',\'\')', 0)" /><label for="MyButtonList_1">Hello World 2</label></td>
</tr>
</table>
次の jQuery コードは、目的を達成します。
IEをサポートするために編集
var rbList = $("input[name='MyButtonList']");
var checkedRB = rbList.filter(":checked");
rbList.filter(":not(:checked)").each(function () {
var origClick = this.onclick;
this.onclick = null;
$(this).click(function (evt) {
if(confirm("Post back?"))
{
origClick();
}
else
{
if( evt.preventDefault ) { evt.preventDefault(); }
evt.returnValue = false;
checkedRB.attr("checked",true);
}
});
});