Pergunta

Estamos escrevendo um aplicativo ASP.NET MVC. Por padrão, se o navegador do cliente tiver JavaScript, o manipulador para cada formulário da página será definido, por JavaScript, para ser aquele que envia o envio para um Ajax "Pipe" (aprimoramento progressivo).

Mas, para uma forma (em uma página de vários), eu gostaria que esse manipulador fosse ignorado/ignorado. Existe uma maneira simples de fazer isso? Talvez substituindo o manipulador especificando meu próprio evento Onsubmit diretamente no DOM - ou em algum outro método?

Usamos o jQuery, para que essas bibliotecas estejam disponíveis para mim.

Foi útil?

Solução

Eu provavelmente resolveria isso atribuindo algum atributo distinto ao formulário que quebra com seus padrões (aquele que não deve ter um comportamento de Ajax) - algo como class="oldschool". No código JavaScript, ao conectar o manipulador de eventos de envio nos formulários, eu certamente excluiria qualquer formulário com esta marca especial:

$('form:not(.oldschool)').submit(function() {
    // Do fancy AJAX stuff
});

Atualizar: Em ordem não Para alterar quaisquer arquivos JavaScript externos e ter o novo comportamento introduzido simplesmente alterando a marcação HTML, considere fazer algo assim:

<form ... onsubmit="if (typeof $ == 'function') $(this).unbind('submit');">

Não é uma beleza, mas parece fazer o trabalho - pelo menos nos navegadores que tenho disponível aqui.

Outras dicas

Embora eu não tenha certeza se entendi o que você quer dizer com "do DOM", presumo que você não pode mudar o código Ajax/JS original, mas você deve ser capaz de inserir um pouco script Tag em algum lugar que é executado após o código que define o manipulador de envio do AJAX.

Assumindo ainda que o conjunto de manipuladores está na forma $("form").submit(...) ou similar você pode usar isso

$('selectorForYourForm').unbind('submit');

Como isso é executado após o código JS original, ele desviaria qualquer manipulador, o código original definido para a ação de envio deste formulário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top