2009-07-22 2 views
2

Отправка Ajax.Beginform при использовании плагина JQuery Validate не останавливает отправку. Есть ли хороший способ гарантировать, что Ajax.Beginform не отправлен?jquery validate & ajax.beginform

Я также пробовал использовать плагин JQuery Forms для 'ajaxify' моей формы. Это работает. Однако моя форма - это форма входа в систему, и если пользователь успешно войдет в систему, я бы хотел, чтобы они были перенаправлены. Я сделал это в Ajax.BeginForm, вернув объект JavaScript, но тот же код с использованием JQuery.Form.js просто отображает Javascript, а не выполняет его. Есть ли способ справиться с этим?

[в соответствии с просьбой ниже, я добавил некоторые примеры кода]

Controller Код

  if (Request.IsAjaxRequest()) 
      { 
       return Content("/receipt/latest"); 
      } 
      else 
      { 
       return RedirectToAction("latest", "receipt"); 
      } 

я использовал это, чтобы вернуть строку в этой Js функции: -

JS

  function manageResponse(responseText, statusText) { 
       if (responseText.toString().substr(0, 1) == '/') { 
        window.location = responseText; 
       } 
       else { 
        $("#formResult").text(responseText); 
       } 
      } 

Я использовал эти параметры, чтобы связать ответ с плагином JQuery Form.

  var options = { 
       beforeSubmit: function() { 
        return $('#login').validate().form(); 
       }, 
       success: manageResponse 
      }; 

Это чувствует себя немного «взломанным» для меня, но оно работает. Я спрашивал, есть ли лучший способ или нет?

Роб

+0

Это может быть решение

ответ

1

Это не кажется слишком Hacky ко мне, но их я не самый изящный парень в мире. Единственное, что я думаю, что я бы сделал по-другому будет настроить его так:

$('#login').validate(); // setup form to use validation plugin 

var options = { 
    beforeSubmit: function() { 
     return $('#login').valid(); // check form is valid 
    }, 
    success: manageResponse 
};