Eu tenho uma página da web com 3 formulários. Não aninhado, apenas um após o outro (eles são quase idênticos, apenas uma variável oculta que é diferente). Um usuário preencherá apenas um formulário e eu gostaria de validar / etc todos os formulários com apenas um script JS.
Então, como, quando um usuário clica no botão de envio do formulário nº 1, faço meu script js lidar apenas com os campos do formulário1? Acho que tem algo a ver com $ (this) .parents, mas não tenho certeza do que fazer com ele.
Meu script de validação (que eu usei em outro lugar, com apenas um único formulário) é mais ou menos assim:
$(document).ready(function(){
$("#submit").click(function(){
$(".error").hide();
var hasError = false;
var nameVal = $("#name").val();
if(nameVal == '') {
$("#name").after('Please enter your name.');
hasError = true;
}
if(hasError == false) {blah blah do all the processing stuff}
Então, preciso substituir itens como $ ("# name"). Val () por $ (this) .parents ('form'). Name.val ()? Ou existe uma maneira melhor de fazer isso?
Obrigado!
var form = $(this).form
como no Javascript normal:function onClick(button) { var form = button.form; }
???Encontrei esta resposta ao pesquisar como encontrar a forma de um elemento de entrada. Eu queria adicionar uma nota, porque agora existe uma maneira melhor do que usar:
Não tenho certeza de quando foi adicionado ao jQuery, mas o método mais próximo () faz exatamente o que é necessário de maneira mais limpa do que usar parent (). Com o mais próximo, o código pode ser alterado para isso:
Ele percorre e encontra o primeiro elemento que corresponde ao que você está procurando e para por aí, portanto não há necessidade de especificar: primeiro.
fonte
Para obter o formulário que o envio está dentro, por que não apenas
Caminho mais fácil e rápido para o resultado.
fonte
Eu usei o seguinte método e funcionou bem para mim
$('#mybutton').closest("form")
fez o truque para mim.fonte
Eileen: Não, não é
var nameVal = form.inputname.val();
. Deve ser ...em jQuery:
Ou em JavaScript:
Ou uma combinação:
Com o jQuery, você pode fazer um loop através de todas as entradas no formulário:
fonte