1

RadioButtonList コントロールがあり、ユーザーがインデックスを変更しようとしたときに Javascript を「確認」したいと考えています。現在、AutoPostBack は TRUE に設定されています。もちろん、javascript 関数などから __doPostBack を呼び出すこともできます。jQuery でいくつか試してみましたが、マウスダウンとクリックについて心配する必要があり、チェックボックスのラベルをクリックして選択できるという事実が常にあります。それなど誰でもこれに対する良い解決策を持っていますか?

明確にするために、選択が行われてポストバックがトリガーされる前に、ユーザーに確認ボックスを表示する方法を探しています。

4

1 に答える 1

2

クリックイベントを使用しないのはなぜですか? これは、クライアント側のポストバック イベントがバインドされる方法です。たとえば、「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);                    
        }         
    });    
});
于 2010-04-09T22:39:27.203 に答える