У меня есть форма, которая при представлении показывает занятую анимацию и отключает кнопку отправки.
Любой знает, как запросить Microsoft Sys.Mvc.FormValidation
видеть, прошла ли форма свой тест, таким образом, я могу предотвратить занятую анимацию, показывающую, не была ли форма на самом деле отправлена? Есть ли некоторое другое обходное решение?
В настоящее время моя сторона клиента JavaScript похожа на это:
$('form').submit(function() {
$('input[type=submit]', this).attr('disabled', 'disabled');
ShowBusy();
});
С наилучшими пожеланиями, Gavin
Лучше, чем добавить атрибут 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();
}
});
Вы можете сделать это, введя записи в реестр (я знаю, это отстой). Искомый ключ варьируется от 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);
}