Pergunta

Eu tenho um formulário (SignUp.php) que aparece em uma janela niromodal quando clico em um botão:

<input value="Edit" class="nyroModal" type="button" href="signup.php">

Gostaria de usar alguma forma de validação do AJAX (para verificar se o nome do usuário foi levado, por exemplo) antes de enviar o formulário.

Eu tinha o seguinte seguinte: quando o usuário clica no botão 'Enviar'. Ele chama a função JavaScript com onClick Isso envia os campos necessários para um script PHP, que retorna se os campos são válidos. Então, se o campo for inválido, notifica o usuário, mas quando o campo é válido, ele envia o formulário por meio de algo como $('#formid').submit();. Fácil o suficiente em teoria.

MAS

O problema é que, quando o nyromodel recebe a nova forma de um URL e cria uma div no dom com o conteúdo, o Firefox ignora completamente qualquer <script> Tag. Usando o Firebug, eu posso ver que realmente recebe o <script> Tags com a resposta, mas o Firefox os ignora. Além disso, não posso criar uma função jQuery na página de que o modelo seja chamado, porque quando o documento é criado, o formulário ainda não existe no DOM.

Alguma idéia de como resolver isso?

Foi útil?

Solução

Tente adicionar um manipulador de envio ao formulário:

onClick='return frmSubmit()'

Neste manipulador, você primeiro serializa os dados do formulário e envia -os ao script de validação. Tenha certeza de return false Depois de emitir a solicitação, como é feito de forma assíncrona. No retorno de chamada de resposta, você implementa o seguinte: Se a resposta indicar que a entrada é válida, você envia programaticamente o formulário com o .submit()-método. Se, no entanto, a resposta indicar que algo está errado (você terá que fornecer o feedback no formato JSON), anexe algum feedback construtivo ao formulário para o usuário ler.

Não se esqueça de capturar o evento KeyPress e impedir que o formulário seja enviado quando o ENTER for pressionado, pois ignorará sua função de validação.

E, UHM, uma sugestão: pode ser melhor fazer toda a validação no lado do cliente, o que geralmente é suficiente. Você provavelmente ouviu que a validação do lado do cliente pode ser contornada, portanto ainda é necessária a verificação do lado do servidor. No entanto, sempre sinto que, se um usuário decide mexer com o sistema, não é necessário fornecer feedback construtivo. Uma mensagem simples indicando que a falha será suficiente. Então, primeiro verifique a entrada com JavaScript simples. Se algo estiver errado, forneça feedback. Se, no entanto, o servidor receber entrada inválida (o que significa que a validação do lado do cliente foi ignorada), basta notificar o usuário que ele falhou.

Outras dicas

Você poderia usar algo como:

onClick='javascript: return myValidationFuncion()

Onde sua função verificaria se o valor é válido, ou seja, faça seu serviço da web ligar lá. Se os valores não válidos, basta retornar false para interromper a execução.

K

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