Размещен сервер jQuery Interrupt ASP.net <submit /> - PullRequest
0 голосов
/ 30 июля 2010

У меня действительно странное поведение, я в основном хочу, чтобы мои кнопки имели симпатичный стиль, и я хочу модальную форму подтверждения сохранения и отмены изменений в веб-форме.события, которые выполняют сохранение и десиккаринг, являются событиями asp.net, связанными с серверными элементами управления, украсив кнопки классом, я могу получить jQuery, чтобы они выглядели красиво, и щелкнув по ним, они работают, как если бы они были стандартными элементами управления на стороне сервера.

поэтому я написал небольшой сценарий, который в основном гласит:

$("#confirmSave-dialog").dialog({
    resizable: false,
    autoOpen: false,
    height: 150,
    modal: true,
    buttons: { 'Save': function() {
        $(".SAVER").trigger('click');
        $(this).dialog('close');
    },
        'Cancel': function() {
            $(this).dialog('close');
        }
    }
});

$(".SAVER").button();

$(".SAVER").click(function(event) {

    var bool = $("#confirmSave-dialog").dialog('isOpen');
    if (!bool) {
        event.preventDefault();
        $("#confirmSave-dialog").dialog('open');
    }
});

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

    $(".SAVER").click(function(event) {

    var bool = $("#confirmSave-dialog").dialog('isOpen');
    if (!bool) {
        debugger;
        event.preventDefault();
        $("#confirmSave-dialog").dialog('open');
    }
    debugger;
});

с запущенным firebug сейчас и затем он запускает событие, как и должно, с не запущенным firebugэто никогда не происходит, без директив отладчика, которые он никогда не делает.

, даже если запущенный отладчик следует по правильному пути в первый раз, когда событие вызывается щелчком по нему и запускает диалоговое окно, а затем, когда происходит сохранениещелкнув по нему, пропускается event.preventDefault ();Позвоните, но не сработает.?

Понятия не имею, зачем нужны идеи / способы исправления / более эффективные способы запуска серверного события?

Заранее спасибо, Лука

1 Ответ

0 голосов
/ 30 июля 2010

Попробуйте управлять обратной передачей вручную в вашей функции JS. Таким образом, нажатие кнопки всегда прерывает обратную передачу. У меня работает каждый раз.

Итак, по кнопке:

<asp:LinkButton ID="btnMyButton" runat="server" class="button" Text="Save Form" OnClientClick="return mySubmit();return false;"  />

Затем создайте функцию mySubmit JS:

<script type="text/javascript">
        function mySubmit() {

            if (!Foo == Bar ) {


                //return false to cancel the page postback or form submit
                return false;

            } else {

                // manually call the postback (Asp.net only)
                 __doPostBack('<%= btnMyButton.UniqueID%>', '')
                // return true to submit the page. 
                return true;
            }

        }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...