Я попробовал ваш код, и, похоже, он хорошо работает в IE.
Мне жаль, что я запутался в проблеме, с которой вы столкнулись.
Вы можете увидеть мой результат в IE11.
Первый сценарий отмены привязки не работает из-за модели событий jQuery. jQuery сохраняет каждую функцию обработчика событий в массиве, к которому вы можете получить доступ через $ ("# foo"). data ('events')
. Функция unbind
ищет только данную функцию в этом массиве. Таким образом, вы можете только обработчики событий unbind ()
, которые были добавлены с помощью bind ()
I ran into a similar issue before. What I concluded was that you can only unbind a method you have binded. Since trialmethod() was NOT binded through jquery, calling unbind on the method wouldnt work.
Please let us know if you figure it out by any chance.
Thanks.
Никто никогда не должен смешивать свою разметку со своим кодом взаимодействия, если они используют jQuery.
Добавьте некоторый javascript на страницу, например так:
$(function() {
$('#aspnetForm').bind('submit',function() {
trialMethod();
});
$('#btnTrial2').bind('click',function() {
$('#aspnetForm').unbind('submit');
});
$('#btnTrial2').bind('click',function() {
$('#aspnetForm').bind('submit', trialMethod2).unbind('submit');
});
});
Теперь, с этим вне пути ... Теперь все должно работать (даже если теперь вы будете дважды связывать #aspnetForm
перед тем, как полностью отсоединять его при нажатии второй кнопки). Проблема заключалась в том, что форма никогда не была «обязательной» для начала. Вы можете отменить привязку параметров onsubmit
к разметке.