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?