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. Кажется, что то, что я делаю, должно быть довольно простым.
Ответы
Ответ 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);