JavaScript "подтвердить" на SelectedIndexИзменить RadioButtonList - PullRequest
1 голос
/ 10 апреля 2010

У меня есть элемент управления RadioButtonList, и я хотел бы сделать Javascript «подтвердить», когда пользователь пытается изменить индекс. В настоящее время AutoPostBack имеет значение TRUE. Конечно, я могу просто вызвать __doPostBack из функции javascript и т. Д. Я пробовал несколько вещей с jQuery, но вам нужно беспокоиться о mousedown и click, и всегда есть факт, что вы можете щелкнуть метку флажка, чтобы выбрать кто-нибудь есть хорошее решение для этого?

Чтобы было ясно, я ищу способ предложить пользователю с полем подтверждения до того, как его выбор будет сделан и инициировать обратную передачу.

1 Ответ

2 голосов
/ 10 апреля 2010

Почему бы не использовать событие click? Это то, как связано событие обратной передачи на стороне клиента. Например, с учетом RadioButtonList с именем «MyButtonList» отображается следующий 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);                    
        }         
    });    
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...