ASP.NET, на котором вход формы проверки MVC допустим, отправляет

У меня есть форма, которая при представлении показывает занятую анимацию и отключает кнопку отправки.

Любой знает, как запросить Microsoft Sys.Mvc.FormValidation видеть, прошла ли форма свой тест, таким образом, я могу предотвратить занятую анимацию, показывающую, не была ли форма на самом деле отправлена? Есть ли некоторое другое обходное решение?

В настоящее время моя сторона клиента JavaScript похожа на это:

$('form').submit(function() {
    $('input[type=submit]', this).attr('disabled', 'disabled');
    ShowBusy();
});

С наилучшими пожеланиями, Gavin

7
задан p.campbell 15 April 2010 в 20:02
поделиться

2 ответа

Лучше, чем добавить атрибут onclick от имени IE6/ IE7 этом решении:

$("a").click(function () { .. anything to do .. })
-121--4860270-

http://www.4guysfromrolla.com/articles/012506-1.aspx

Короче говоря, (1) существует свойство «SubmitDisabledControls» формы или (2) подправить предоставленный автором javascript

-121--3603998-

Я сдался в конце концов и подключился к библиотеке проверки JQuery, а не с помощью Microsoft ASP.NET MVC 2 RC и библиотечного файла

В этой статье описывается процесс: http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx

Таким образом, с проверкой JQuery в действительности все, что мне нужно было сделать, это сделать вызов valid ()...

$('form').submit(function() {
    if ($('form').valid()) {
        $('input[type=submit]', this).attr('disabled', 'disabled');
        ShowBusy();
    }
});
10
ответ дан 7 December 2019 в 01:21
поделиться

Вы можете сделать это, введя записи в реестр (я знаю, это отстой). Искомый ключ варьируется от 32 до 64-разрядных систем. Для 32-битных систем ключ

HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\NativeDE\StepOver

, Если вы управляете 64-битным OS и 32-битной Визуальной Студией, ключ

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\NativeDE\StepOver

, который ключ Wow6432Node ключ, существующий для 32-битных приложений, работающих на 64-битных системах . (Sidenote: поиск в реестре «_RTC_CheckEsp», вероятно, приведет вас в нужное место, это запись по умолчанию в Visual Studio 9)

Синтаксис должен быть знаком вам, но в качестве примера, простая запись может быть последовательностью значение boost::. * = NoStepInto , что позволит избежать шага отладчика в Boost. Другие примеры см. в http://www.cprogramming.com/debugging/visual-studio-msvc-debugging-NoStepInto.html .

Надеюсь, что это поможет:)

-121--1685008-

Хорошо, я нашел другой способ исправить эту проблему. Вот исправление:

Пожалуйста, дайте мне отзыв! Я горжусь собой;)

$(document).ready(function() {
    if (jQuery.browser.msie) {
            select_init();
    }
});


function select_init () {
    var selects = $('select');
    for (var i = 0; i < selects.length; i++) {
        _resizeselect.init(selects[i]);
    }
}


var _resizeselect = {
    obj : new Array(),
    init : function (el) {
        this.obj[el] = new resizeselect (el);
    }
}

function resizeselect (el) {

    this.el = el;
    this.p = el.parentNode;
    this.ht = el.parentNode.offsetHeight;
    var obj = this;
    this.set = false;

    el.onmousedown = function () {
        obj.set_select("mousedown");
    }
    el.onblur = function () {
        obj.reset_select("blur");
    }
    el.onchange = function () {
        obj.reset_select("change");
    }

}

resizeselect.prototype.set_select = function (str) {

    if (this.set) {
        this.set = false;
        return;
    }

    this.el.style.width = "auto";
    this.el.style.position = "absolute";
    this.p.style.height = this.ht + "px";
    this.p.style.zIndex = 100;
    this.set = true;
    this.el.focus();
}

resizeselect.prototype.reset_select = function (str) {
    this.el.style.width = "";
    this.el.style.position = "";
    this.p.style.height = "";
    this.p.style.zIndex = 1;
    this.set = false;
    window.focus();
}
-121--1428696-

Использовать http://jquery.malsup.com/form/ . Вот как я делаю - этот метод обрабатывает ошибку (и другие условия), чтобы остановить анимацию. Он также может либо ajaxify форму или отправить его сразу (в зависимости от флага отправки), и сделать несколько других вещей.

function GenericAjaxForm(form, success, submit, beforeSubmit) {
   var form = $(form);
   var options = {
      beforeSubmit: function(data, frm, options) {
         form.disable(true);
         form.find("input:submit:last").after(
            "<span class='ajaxwait'><img src='../Content/images/smallwait.gif' /></span>");
         if (beforeSubmit)
            return beforeSubmit(data, frm, options);
      },
      error: function(xhr, status, error) {
         $(".validation-summary-errors").html(getAjaxErrorMessage(status, xhr));
         form.disable(false);
         form.find(".ajaxwait").remove();
      },
      success: function(data) {
         form.disable(false);
         form.find(".ajaxwait").remove();
         $(".validation-summary-errors").html('');
         if (CheckValidationErrorResponse(data, form))
            return;
         success(data);
      }
   };
   if (submit)
      form.ajaxSubmit(options);
   else
      form.ajaxForm(options);
}
0
ответ дан 7 December 2019 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: