Открытие модального кода из кода за абсолютного сбоя
Я пытаюсь запустить загрузочный модал в конце раздела кода, вызывая функцию Javascript, она запускает alert (), который находится в функции, но упорно отказывается отображать любой модал, который я пытаюсь.
Код за частичным :-
ScriptManager.RegisterStartupScript(Me, Page.GetType(), "Script", "openModal();", True)
И функция Javascript на странице содержимого :-
<%@ Page Title="" Language="vb" AutoEventWireup="False" MasterPageFile="~/Site.Master" CodeBehind="clientprocess.aspx.vb" Inherits="UPARS.clientprocess" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %> <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"> </asp:ScriptManager> <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> <style> .GridViewClass td, th { padding: 4px; } </style> <script type="text/javascript"> function openModal() { alert("howdy"); $('#chqPayModal').modal('show'); } </script>
И модальный код:-
<pre> <div class="modal modal-dialog-centered fade " id="chqPayModal" tabindex="-1" role="dialog" aria-labelledby="chqPayModal" aria-hidden="true"> <div class="modal-dialog " role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div class="row"> <div class="col-md-3"></div> <div class="col-md-5"> <div class="form-group"> <input type="text" class="form-control" id="chqNumber" placeholder="Cheque Number"> </div> <div class="form-group"> <input type="text" class="form-control" id="chqAmount" placeholder="Cheque Value"> </div> </div> </div> </div> <div class="modal-footer"> <button type="button" runat="server" class="btn btn-secondary" data-dismiss="modal">Close</button> <button type="button" onclick="chqTransfer();" class="btn btn-primary">Save </button> </div> </div> </div> </div>
Что я уже пробовал:
Я могу запустить этот модал без проблем с помощью кнопки на странице содержимого, но не из кода позади, хотя часть alert() действительно срабатывает.
Надеюсь, у кого-то есть какая-то идея, а у меня ее наверняка нет ....
F-ES Sitecore
Первое, что вам нужно понять, это то, что вы не можете вызвать js из code-behind, ваш code-behind работает на сервере и генерирует выходные данные, которые затем отправляются в браузер для запуска. Все, что делает ваш RegisterStartupScript, - это добавляет js к выходным данным, которые вы хотите запустить, когда браузер получит готовую страницу.
Если "alert" работает, но модальный не отображается, то это, вероятно, потому, что он не может найти его по идентификатору. Мы не можем сказать, почему это так, вам нужно будет посмотреть на источник страницы и попытаться понять его. Вы можете отлаживать, если это проблема, используя такой код, как
функция openModal() {
alert($('#chqPayModal').длина);
}
если предупреждение показывает "0", то это проблема.
Member 10111160
Привет
Спасибо, что нашли время ответить, я добавил отладочный код, но пока первое предупреждение все еще работает, предупреждение($('#chqPayModal').длина); не запускается вообще, так что 2-е окно оповещения вообще не появляется.
Если я просто помещу ваш отладочный код в одну функцию, ничего не произойдет в отношении срабатывания предупреждения....
F-ES Sitecore
Если код вообще не запускается, это обычно происходит из-за синтаксической ошибки. Проверьте консоль ошибок браузера, возможно, вы не загружаете библиотеку jQuery должным образом или, возможно, есть проблема в другом месте.
Member 10111160
Похоже, что это Jquery, который он не будет запускать, мое простое и простое предупреждение JavaScript работает нормально.
Я загружаю их на сайт.Главный файл :-
<!-- Требуется JS скриптов --&ГТ;
<!-- jQuery 3 -->
<!-- Загрузочный 3.3.7 --&ГТ;
<!-- Приложение AdminLTE -->
Они должны функционировать, так как все остальные Бутстрапы и Модалы прекрасно работают на странице содержимого.
F-ES Sitecore
Нет смысла делать предположения, используйте вкладку Сеть инструментов браузера, чтобы убедиться, что скрипты загружаются, и проверьте консоль на наличие ошибок.
Member 10111160
Ошибка, которая застряла в предупреждении, которое вы сказали мне добавить, такова:-
Строка: 259
Ошибка: '$ ' не определено
Member 10111160
Также загружается JQuery
F-ES Sitecore
Если он загружен, вы не получите ошибку $ undefined. Проверьте, что он загружается, прежде чем ваша функция использует его.
Member 10111160
Я загружал Jquery на главную страницу сайта (поэтому я (возможно, неправильно) предположил, что он загрузится до страницы контента. Однако я добавил вторую ссылку, чтобы загрузить ее на страницу содержимого перед функцией. Это изменило ошибку на :-
Линия: 261
Ошибка: объект не поддерживает свойство или метод 'модальный', который по-прежнему ссылается на строку $('#chqPayModal').модальные('показать');
F-ES Sitecore
Don't add extra references, you're just making the issue worse, you need to resolve the original problem. Again, how do you know it is loading? Are you just assuming it is loading as assumptions are the root of many issues. I'm guessing you don't quite understand that the code on your master page runs in the location context of the content page, and I'm further guessing your content page is in a sub-folder and I'm also guessing the references in your master page are relative, and if all of those guesses are correct you are not loading the jQuery script because the paths are wrong because you're in a different folder. If this is the issue and your jQuery files are in the project use Страница.ResolveUrl чтобы ссылаться на ваши скрипты, и они должны работать где угодно.
Если вышеприведенные предположения не верны, то я боюсь, что мы не можем сказать вам, почему ваш код не может найти ваши файлы, мы не можем получить доступ к вашей системе.
Member 10111160
Не знаю, почему это продолжает стирать сегменты кода на форуме, я добавил вторые ссылки в файл контента для bootstrap и adminLTE, теперь все это работает.... но я думаю, что смягчил проблему, а не решил ее ...
Member 10111160
Хорошо, теперь он работает, добавив вторую ссылку на страницу контента :-
<!-- Приложение AdminLTE -->
Я предполагаю, что упускаю момент в цикле загрузки страницы, поскольку оба вышеперечисленных элемента также упоминаются на сайте.Главный файл
Member 10111160
Member 10111160
Извините, что по какой-то причине при размещении путей в ответе они удаляются, но они правильные и загружаются..
Member 10111160
Я знаю, что идентификатор модала правильный, потому что он отлично срабатывает от кнопки asp:на странице содержимого, и я только что скопировал и вставил идентификатор модала в функцию Javascript...