2013-03-14 2 views
3

Я разрабатываю мобильное решение с комбинацией jQuery.mobile и asp.net webforms.проблема с jQuery-mobile и ASP.NET

Для постбэк моей asp.net управления, чтобы работать должным образом, я должен отключить Ajax на в верхней части страницы, как это:

<script> 
     $.mobile.ajaxEnabled = false; 
    </script> 

Но когда Аякс отключаются, как это, другие функции Безразлично» похоже, работает. Я не могу назвать Диалоги/всплывающие окна JQuery документ, готовый

Например:

$(document).ready(function() {   
    $('#myPopup').popup('open'); 
    }); 

это будет просто вызвать всплывающее окно, чтобы показать меньше, чем второй, то пропадает. Также, когда я регистрирую клиентский код из кода, чтобы вызвать всплывающее окно при нажатии кнопки серверного управления , всплывающее окно просто мигает, а затем исчезает. Но когда я отключу ajax в верхней части страницы, всплывающие сообщения работают нормально.

Любые идеи, как обойти эти проблемы?

ответ

0

Документ не может быть использован с jQuery Mobile. Он обычно срабатывает до того, как страница DOM заселена.

Вместо этой линии:

$(document).ready(function() {   
    $('#myPopup').popup('open'); 
}); 

Используйте эту строку:

$(document).on('pagebeforeshow', '#page-id', function(){  
    $('#myPopup').popup('open'); 
}); 

Где #page-id является идентификатор страницы, которая содержит, что всплывающее окно.

JQuery Mobile имеет проблемы с документом готовы поэтому его разработчики создали страницу evenets исправить эту проблему, читать об этом подробнее в этом ARTICLE или найти его HERE.

EDIT:

Я думаю, ваша проблема также в $.mobile.ajaxEnabled = false; обработки.

Этот пример кода MUST срабатывать от mobileinit события, как это:

$(document).bind("mobileinit", function() { 
    $.mobile.ajaxEnabled = false; 
}); 

Еще одна вещь, mobileinit событие MUST срабатывать перед тем jQuery Mobile инициализируется, как это:

<script src="http://www.dragan-gaic.info/js/jquery-1.8.2.min.js"></script>  
<script> 
     $(document).bind("mobileinit", function() { 
      $.mobile.ajaxEnabled = false; 
     });  
</script> 
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script> 
+0

Привет - спасибо за ваш ответ. Я попытался перейти на «pagebeforeshow», но он работает, только если я установил $ .mobile.ajaxEnabled = true; – micknt

+0

Позволяет ему шаг за шагом. Вы отключили ajax внутри события mobileinit? Ajax не может быть отключен следующим образом: Gajotres

+0

Привет, я приближаюсь, но пока нет. Это своего рода странный рабочий процесс в JQM. У меня теперь есть: $ (document) .on ('pageinit', function() { $ .mobile.ajaxEnabled = false; }); И затем событие кнопки в моем коде с: Page.ClientScript.RegisterClientScriptBlock (Me.GetType(), "popup", "$ (document) .on ('pagebeforeshow', '#mobile_page', function() {$ ('# alert'). popup ('open');}); ", True) Response.Write (" test ") Проблема в том, что любой код после вызова всплывающего окна не выполняется , Поэтому в этом случае Response.Write («test») не выполняется. – micknt

0

Я СДЕЛАЛ ЭТО .....

НЕ ИСПОЛЬЗОВАТЬ инструкции описаны here

просто открыть jquery.mobile-1.3.1.min.js файлу штраф ajaxEnabled: 0 и изменить его на: ajaxEnabled: 1

Жмем CTRL + F5 и радость проекта, пока он продолжается! ;)

Смежные вопросы