объект формы внутри обратного вызова ошибки ajaxForm

Я пытаюсь получить доступ к моему объекту формы внутри метода ошибки ajaxForm:

$('#foo').ajaxForm({
  error: function(){
    // where's my $('#foo') object?
  }
});

ошибка может принимать 3 параметра, но ни один из них не является объектом формы, также это возвращает URL-адрес, но снова не форма.

Какие-либо предложения?


person jsharpe    schedule 14.09.2009    source источник


Ответы (4)


Сложно, почему бы не использовать:

var myForm = $("#foo");

myForm.ajaxForm({
 error: function(){
  myForm.//whatever
 }
});

Если есть другой способ, я хотел бы знать сам.

person David Andres    schedule 14.09.2009
comment
Приятно, что успех/перед отправкой имеют прямой доступ к объекту формы, и немного раздражает, что ошибка не согласуется с этим. - person jsharpe; 16.09.2009
comment
Это работает, но если у вас есть страница с несколькими формами, вы, похоже, не сможете извлечь нужную. - person Yehosef; 07.07.2014
comment
@DavidAndres Я отправил новый ответ, если вам нравится это знать :) - person Ali Sheikhpour; 30.06.2019

В ajaxForm сам элемент формы доступен в разделе beforeSubmit:

$('#foo').ajaxForm({

   beforeSubmit: function(formData, jqForm) {
        var myform = jqForm[0];
        /*
         If there are multiple forms in the selector, 
        each form is accessible with its order in the array
        */
   }

  error: function(){
    // where's my $('#foo') object?
    //It is here: myform
  }
});
person Ali Sheikhpour    schedule 30.06.2019

Если вы прочитаете вкладку «Работа с полями» в документации этого плагина, я думаю, вы найдете свой ответ.

Для производительности вам, вероятно, следует сохранить ссылку на форму, прежде чем привязывать ajaxForm.

$(document).ready(function() {
    $foo = $('#foo');
    $foo.ajaxForm({
        error: function() {
            alert($('#fieldId', $foo).fieldValue()[0]);
        }
    });
});
person great_llama    schedule 14.09.2009

this не работает? то есть,

$('#foo').ajaxForm({
  error: function(){
    alert($(this).attr('name'));
  }
});
person brettkelly    schedule 14.09.2009
comment
@indedmn: похоже, ключевое слово this в обратном вызове относится к URL-адресу. Смотри ОП... - person David Andres; 14.09.2009