JQueryUI Dialog + Firefox + ASP.Net = доступ к строгому режиму функции звонка подвергается цензуре - программирование
Подтвердить что ты не робот

JQueryUI Dialog + Firefox + ASP.Net = доступ к строгому режиму функции звонка подвергается цензуре

У меня есть страница, которая отлично работает в IE и Chrome, но не работает в Firefox и Opera. Когда я говорю, что это не работает, я имею в виду, что кнопка Submit ничего не делает. Это страница с несколькими вложенными UpdatePanels на ней и несколькими jQueryUI Accordions на ней тоже.

У меня есть простой div.

<div id="date-dialog" title="Date?">
    <label id="lblDate" for="txtDate">
        Please Enter Your The Date:
    </label>
    <input type="text" id="txtDate" class="text ui-widget-content ui-corner-all" />
</div>

А потом у меня есть простой код, чтобы превратить его в диалог:

$('#date-dialog').dialog({
    autoOpen: false,
    modal: true,
    resizable: false,
    buttons: {
        "Submit": function () {
            __doPostBack('DateButton', $('#txtDate').val());
        },
        "Cancel": function () {
            $(this).dialog("close");
        }
    }
});

$('#txtDate').datepicker({ dateFormat: 'yy-mm-dd' });

Я также попытался добавить это, что не помогает и на самом деле не работает с модальным диалогом:

    open: function (type, data) {
        $(this).parent().appendTo("form");
    },

В Firefox я получаю следующую ошибку:

Error: TypeError: access to strict mode caller function is censored
Source File: http://ajax.microsoft.com/ajax/4.0/2/MicrosoftAjaxWebForms.debug.js
Line: 718

Я понятия не имею, что делать, чтобы исправить это. Мне бы хотелось отключить strict mode, но я не могу найти никакой информации о том, как это сделать. Я едва могу найти информацию об этой ошибке с помощью Google. Кажется, что то, что я делаю, должно быть довольно простым.

4b9b3361

Ответ 1

Пока это не объясняет, как исправить эту проблему, это рабочая работа.

Я создал скрытое поле, соответствующее каждому полю в диалоговом окне. Затем я создал кнопку. Они должны храниться вне диалогового окна div, потому что div перемещается за пределы формы, когда он включен в диалоговое окно. Затем я изменил код создания диалогового окна, чтобы быть примерно таким:

$('#date-dialog').dialog({
    autoOpen: false,
    modal: true,
    resizable: false,
    buttons: {
        "Submit": function () {
            $('#<%=hfDate.ClientID %>').val($('#txtDate').val());
            $('#<%=btnFormSubmit.ClientID %>').click();
            $(this).dialog("close");
        },
        "Cancel": function () {
            $(this).dialog("close");
        }
    }
});

Ответ 2

Это своего рода старая должность, но эта проблема все же возникла для меня сегодня. Я не хотел использовать щелчок кнопки, поэтому вместо этого я попробовал setTimeout, и он также работает.

Для людей, имеющих эту проблему, попробуйте следующее решение:

setTimeout(function() { __doPostBack('DateButton', $('#txtDate').val()); }, 1);