Pegando valor de INPUT dentro de um foreach com jQuery

jQuery

02/01/2018

Galera blza? Então to com o seguinte problema gostaria da ajuda de vocês.

Tenho um input dentro de um foreach que segue abaixo.

<input type="number" onchange="cadastraNotaImportada('<?=$disciplina['nome_disciplina'];?>')" class="form-control" name="nota1bm" value="">

Em uma outra página jscript.js

Tenho a chamada da função cadastrarNotaImportada.

Como eu faço pra pegar o valor do input de cima?? Tentei de todas as formas não consegui. Essa foi a última tentativa antes da postagem da pergunta.

function cadastraNotaImportada(nomeDisciplina) {
$(document).ready(function(){
var teste = $(this).val();

alert(teste);
});
}
Lindoberto Araújo

Lindoberto Araújo

Curtidas 0

Melhor post

Lindoberto Araújo

Lindoberto Araújo

02/01/2018

Galera eu consegui, não sei se é a forma correta, porém como funcionou eu vou ficar usando e pesquisando se existe uma forma melhor. Mais se alguém estiver precisando segue como ficou o código

<input type="number" onchange="cadastraNotaImportada('<?=$disciplina['nome_disciplina'];?>',this.value)" class="form-control disciplina" name="<?=$disciplina['nome_disciplina'];?>" value="">


function cadastraNotaImportada(nomeDisciplina, value) {
    $(document).ready(function(){             
        alert(value);
    });
}


GOSTEI 2

Mais Respostas

Rander Freitas

Rander Freitas

02/01/2018

Olá Marcelo,

Eu não entendi porque você imprime o nome da disciplina dentro da função javascript "cadastraNotaImportada('<?=$disciplina['nome_disciplina'];?>'". Pois você já imprime o nome da disciplina o atributo name do input. Você também poderia ter feito o seguinte:

<input type="number" class="form-control disciplina" name="<?=$disciplina['nome_disciplina'];?>" value="">


$(document).ready(function(){
    
    $(input[type="number"]).change(function(){
         alert($(this).val());
     });
});


Qualquer dúvida, estamos aí!

Valeu!
GOSTEI 2
Kelvin Andrade

Kelvin Andrade

02/01/2018

Olá Marcelo,

Este problema é bem comum acontecer, não é o input que está chamando a função que você criou e sim o $(document), logo o this terá outro escopo. Você pode resolver isso passando o this como parâmetro, assim como fez!

onchange="cadastraNotaImportada('<?=$disciplina['nome_disciplina'];?>',this.value)"


ou

onchange="cadastraNotaImportada('<?=$disciplina['nome_disciplina'];?>',this)"


Tente colocar o seguinte:

$(document).ready(function(){             
    $('input.disciplina').on('change', function(){
        console.log(this);
    }
});
GOSTEI 1
Lindoberto Araújo

Lindoberto Araújo

02/01/2018

Rcarlos, primeiro obrigado pela ajuda, agora deixa eu te explicar o pq que chamei o nome da disciplina dentro da função. Esse input é gerado dentro de um foreach então a quantidade de disciplinas pode variar, em uma chamada pode vim Português e matemática e em outra pode vim História e Geografia então eu pego o nome pra saber qual disciplina estou lhe dando e qual salvar as informações no BD, está correto a lógica?
GOSTEI 0
Lindoberto Araújo

Lindoberto Araújo

02/01/2018

Olá Marcelo,

Este problema é bem comum acontecer, não é o input que está chamando a função que você criou e sim o $(document), logo o this terá outro escopo. Você pode resolver isso passando o this como parâmetro, assim como fez!

onchange="cadastraNotaImportada('<?=$disciplina['nome_disciplina'];?>',this.value)"


ou

onchange="cadastraNotaImportada('<?=$disciplina['nome_disciplina'];?>',this)"


Tente colocar o seguinte:

$(document).ready(function(){             
    $('input.disciplina').on('change', function(){
        console.log(this);
    }
});


Obrigado pela dica cara, vou dar uma olhada nessa opção! Obrigado mesmo!
GOSTEI 1
POSTAR