После обратной передачи моя функция JavaScript не работает в ASP.NET
У меня есть общие функции, и я сворачиваю его на CommonFunctions.js
в папке Scripts.
Я включаю его на мою главную страницу и использую его на своих страницах. Когда я отправляю сообщение на странице, моя функция не работает.
Мой CommonFunctions.js
:
$(function () {
gf();
if (Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) {
gf();
}
function gf(){
$('.AddNewGeneralPanel').click(function () {
if ($(this).find('.AddNewGeneralPanelStyle').text() == "") {
$(this).find('.AddNewGeneralPanelStyle').text("( Gizle )");
lastOpenId = $(this).attr("kodid");
}
else
$(this).find('.AddNewGeneralPanelStyle').text("");
$(this).next('.AddNewGeneralAccordionDiv').slideToggle('slow', function () {
});
});
}
});
Ответы
Ответ 1
Поскольку вы используете UpdatePanel
, часть DOM, к которой вы привязали свой обработчик событий, получает возможность сбросить и воссоздать после обратной передачи. Это приводит к удалению любых обработчиков событий, которые были прикреплены jQuery при первой загрузке страницы.
Когда вы отправляете назад только часть страницы, jQuery $(function() {});
не запускается снова, поэтому ваши обработчики никогда не будут повторно подключены.
Здесь связанный вопрос, который показывает, как переадресовать ваши события, когда обновляется UpdatePanel
.
Ответ 2
Это из-за частичной обратной передачи частичной копии. вот что вам нужно сделать.
function pageLoad(sender, args)
{
$(document).ready(function(){
// put all your javascript functions here
});
}
У меня была такая же проблема, и это сработало для меня. Надеюсь, это тоже поможет.
Ответ 3
Это из-за использования updatepannel
. Следующий код работает нормально. Просто введите код jquery
внутри события pageLoad
, как показано ниже
function pageLoad(sender, args) {
$(document).ready(function () {....}
}
Ответ 4
У меня та же проблема, я решил с помощью этого кода:
<script type="text/javascript">
function pageLoad()
{
$('#datetimepicker2').datetimepicker();
}
</script>
Ответ 5
Предполагая, что вы используете UpdatePanel для выполнения обратной передачи, а JS-код привязан к элементам HTML на панели обновления, вам нужно снова прикрепить их при загрузке панели обновления. Вы можете подключить свой код к событию endRequest:
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler)
http://msdn.microsoft.com/en-us/library/bb383810.aspx
Имейте в виду, что если вы используете несколько панелей обновлений, вы должны проверить, какая панель обновления обновлена, и прикрепить только те события, которые необходимы, иначе вы рискуете событиями, которые срабатывают более одного раза.
Ответ 6
Столкнулась с такой же проблемой. Изменить
$(document).ready(function() {
к
Sys.Application.add_load(function() {
это заставит его работать даже на частичном postbacck