Я обнаружил эту проблему пару раз, когда использовал ASP: CheckBoxes со свойством AutoPostBack, установленным в true.
Если это свойство имеет значение true, ASP .NET создает некрасивое встроенное событие onclick для сгенерированного HTML, как это:
<input id="CheckBox1" type="checkbox" name="CheckBox1"
onclick="javascript:setTimeout('__doPostBack(\'CheckBox1\',\'\')', 0)" />
Таким образом, если вы снова установите событие onclick, оно будет переопределено и PostBack не произойдет.
Я нашел обходной путь к этому, в основном, чтобы сохранить исходное событие onclick, которое генерирует ASP .NET, и назначить новую функцию onclick, которая будет отображать подтверждение, и если пользователь выберет Cancel, он вернет false, в противном случае Исходное событие щелчка будет выполнено нормально с правильным контекстом и объектом события, и произойдет обратная передача, например:
window.onload = function() {
var checkBox1 = document.getElementById('<%=CheckBox1.ClientID %>'),
originalOnClick = checkBox1.onclick; // store original click event
checkBox1.onclick = function(e) {
if (confirm('Are you sure?')) {
originalOnClick.call(this, e); // call the original click with the right
// context and event object
} else {
return false; // cancel the click
}
};
};