Разрешить или запретить постбэк

maxterbear

Я хочу вызвать диалоговое окно перед постбеком, но не ввиде стандартной функции
<asp:Button ID="Button1"
runat="server" Text="Button" OnClick="Button1_Click" OnClientClick = "return confirm('post back to the server');" />
а в виде всплывающего слоя, на котором пользователь будет нажимать OK / Cancel. Как это лучше всего сделать?
6 ответов

maxterbear

Использовать любой js скрипт, или ModalPopup


maxterbear

if (typeof (jQuery) != 'undefined') {
 jQuery(function () {
 jQuery.fn.exists = function () { return this.length > 0; };

 if (typeof (jQuery.fn.dialog) != 'undefined') {
 initConfirmDialog();
 }
 });
}

function initConfirmDialog() {
 var cnfrm = '#cnfrm';

 if (!$(cnfrm).exists())
 $(document.body).append("<div style='display:none' id='cnfrm'><p></p></div>");

 $(cnfrm).dialog(
 {
 autoOpen: false,
 modal: true,
 show: 'fade',
 speed: '200',
 buttons: {
 "Да": function () {
 $(this).dialog("close");

 if (lcallback) {
 isp = true;

 lcallback(lcallbacksender);

 isp = false;
 }
 },

 "Нет": function () {
 $(this).dialog("close");
 return false;
 }
 }
 });

 window.confirm = function (mess, callback, sender) {

 //console.log(arguments[0]);

 if (mess == "")
 return false;

 if (!isp) {
 lcallback = callback;
 lcallbacksender = sender; // arguments.callee.caller - not all browsers send valid arguments (

 $(cnfrm + ' p').html(mess);
 $(cnfrm).dialog('open');

 return false;
 }
 };
}
<script type="text/javascript" src="/Scripts/jQuery-UI/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="/Scripts/jQuery-UI/jquery-ui-1.8.16.custom.min.js"></script>

<asp:Button <span>ID</span><span>=</span><span>"Button1"</span>
<span>runat</span><span>=</span><span>"server"</span> <span>Text</span><span>=</span><span>"Button"</span> <span>OnClick</span><span>=</span><span>"Button1_Click"</span> <span>OnClientClick</span> <span>=</span> <span>"return confirm('Post back to the server?', function(sender){sender.click();}, this);"</span> <span>/</span>>
Please :)


maxterbear

SanSYS, шотамногабукав :)


maxterbear

SanSYS, шотамногабукав :)
мда.. да еще и не правильноЯ забыл указать следующее обявление:
var lcallback = function() {};
var lcallbacksender = null;
var isp = false;
по существу - я понятия не имею как правильно переопределить confirm, потому сделал такой костыль, который более-менее можно нормально использовать во всех браузерахБыл заказчик, грит хочу красивые алерты, ну там благо все совсем простоПрошло время - появилось несколько конфирмов, ну и я далеко не стал уезжать, сделал по тому же принципу но на скорую руку, собственно сюда и скинул как нашел в старых бекапахТам еще и prompt переопределяетсяВсе руки не дойдут нормального javascript-кодера какого нить попросить отрефакторить (или переписать все заново), т.к. javascript как таковой я не знаю и, очевидно, представленный код работает не оптимально, но он работает


maxterbear

SanSYS, да ладно, если оно работает и это можно как-нить гибко оформить в отдельный контрол - не вопрос. Но я сторонник минимализма :)P.S. Вариант от Парамона как нельзя лучше подходит для решения сабжа - всё в коробке под ключ, взял и кури.


maxterbear

Вариант от Парамона как нельзя лучше подходит для решения сабжа - всё в коробке под ключ, взял и кури.
Согласен