Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jackson.barreto

.val() LOUCO!

Recommended Posts

Olá amigos, estou recuperando o valor de um campo select com a função .val() e ela esta agindo como se fosse .text() !!! :S

tenho 2 campos selects e um funciona normalmente o segundo esta com este problema.

 

esse é o codigo do html.

<div class="row">

<div class="col-sm-4 form-group">

 

<label for="">Marca:</label>

<select name="fornecedor" id="fornecedor" class="form-control" required>

<option value="" disabled selected="">Selecione a Marca...</option>

<?php

$consulta = connect_db("SELECT * FROM fornecedor");

while ($row = mysqli_fetch_assoc($consulta)) {

echo '<option value="' . $row['id'] . '">' . $row['nome'] . ' </option>';

}

 

?>

</select>

</div>

<div class="col-sm-4 form-group categoria">

<label for="">Categoria:</label>

<select class="form-control" id="categoria" required>

<option value="" selected disabled>Selecione uma Categoria...</option>

<?php

$consulta = connect_db("SELECT * FROM categorias");

while ($row = mysqli_fetch_assoc($consulta)) {

echo '<option value="'. $row['id'] .'">' . $row['nome'] . '</option>';

}

?>

</select>

</div>

<div class="col-sm-4 formgroup subcategoria">

<label for="">Sub-Categoria</label>

<select class="form-control" id="subcat" required>

<option value="" disabled selected>Selecione a Sub-Categoria</option>

 

</select>

</div>

</div>

 

 

<div class="row produto">

<div class="col-sm-2 form-group">

<label for="">Local</label>

<input type="text" name="local" class="form-control">

</div>

<div class="col-sm-6 form-group">

<label name="produto" for="">Produto</label>

<select id="produto" class="form-control" >

<option value="" selected disabled>Escolha o produto...</option>

 

</select>

</div>

<div class="col-sm-1 form-group">

<label for="">Cor </label>

<select name="cor" id="" class="form-control"></select>

</div>

<div class="col-sm-1 form-group">

<label for="">Alt.</label>

<input type="text" name="altura" class="form-control">

</div>

<div class="col-sm-1 form-group">

<label for="">Larg.</label>

<input type="text" name="largura" class="form-control">

</div>

 

 

<div class="col-sm-1">

<h1> <button type="submit" name="new_item" class="btn btn-primary btn-sm glyphicon glyphicon-plus"></button></h1>

</div>

</div>

O JS é este:

 

$ (function(){

 

$(".subcategoria").hide();

 

$(".categoria").hide();

 

$(".produto").hide();

 

$("#fornecedor").change(function(){

$(".categoria").fadeIn(800);

});

 

$("#categoria").change(function(){

$(".subcategoria").fadeIn(800);

 

});

 

$("#categoria").change(function(){

 

$.post("escolheproduto.php", {categoria: $(this).val()}, function(valor){

$("#subcat").html(valor);

});

});

 

$("#subcat").change(function(){

$(".produto").fadeIn(800);

 

$.post("escolheproduto.php", {subcategoria: $(this).val(), fornecedor: $("#fornecedor").val()}, function(valor){

$("#produto").html(valor);

});

});

 

 

 

 

 

});

e o php é este:

if (isset($_POST['categoria'])) {

$categoria = $_POST['categoria'];

 

$consulta = connect_db("SELECT * FROM sub_categorias WHERE categoria = $categoria");

echo '<option value="" disabled="" selected="">Selecione a Sub-Categoria...</option>';

while ($row = mysqli_fetch_assoc($consulta)) {

echo '<option value"'. $row['id'] . '">' . $row['nome'] . '</option>';

}

}

 

 

if (isset($_POST['subcategoria'])) {

$subcategoria = $_POST['subcategoria'];

$fornecedor = $_POST['fornecedor'];

 

$consulta = connect_db("SELECT persianas.* , precos.fornecedor, precos.preco FROM persianas

INNER JOIN precos ON persianas.id = precos.persiana WHERE precos.fornecedor = $fornecedor AND persianas.sub_categoria = $subcategoria ");

 

echo '<option value="" disabled="" selected="">Selecione um Produto...</option>';

while ($row = mysqli_fetch_assoc($consulta)) {

echo '<option value="' . $row['id'] . '">' . $row['nome'] . '</option>';

}

 

}

O problema ocorre no select #subcat ao testar lá no php o que estou recebendo, verifiquei que o que esta indo é o texto do option e não o value, o value é uma ID, ou seja um inteiro, e esta inso uma string de varios caracteres que é o conteúdo do option.

 

OU sejaaaa o val esta atuando como text! o que sera que ta acontecendo? :(

 

 

:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça um teste no event change do #subcat e verifique o resultado no console (Ctrl + Shift + J) e poste aqui também

$("#subcat").change(function(){
  console.log( $(this).val() );
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

tah.. depois que você selecionar a #categoria e o select #subcat carregar os options, dê um "Inspecionar elemento" com o botão direito do mouse e veja se os "value" estão com o ID

Compartilhar este post


Link para o post
Compartilhar em outros sites

affff......... olhei isso 30 vezes....e tava o ID lá.....mas hoje com a cabeça fria olhei.....e esta assim:

 

<option value"3">

 

falta o sinal de igual....contudo como pode ver no codigo do php...esta com o sinal de = ...

 

 

AH!!! Olhei aqui denovo que loucura..o código de cima!!! de categoria estava sem o sinal de igual....só consegui ler qnd copiei e colei um abaixo do outro!!!!!

 

HUGO MUITO OBRIGADO!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por João Pedro Amorim
      Olá amigos!
      Estou criando um formulário para inscrições de matrículas na escola onde trabalho. Os dados inscritos no formulário serão enviados para inserir em um banco de dados, mas o que eu preciso é o seguinte, um dos campos do formulário é "SÉRIE CURSADA EM 2017" onde a pessoa vai escolher entre: 1º ANO, 2º ANO... e a outo campo do formulário é "SÉRIE CURSADA EM 2018" onde este campo deve preencher automaticamente com a série posterior a de 2017. Exemplo: se a pessoa selecionar 1º ANO, no próximo campo deve aparecer já selecionado 2º ANO.
      Como devo fazer isso?
      Valendo crédito no código do site rsrs.
      Valeu galera!
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.