Jquery Значение радиокнопки не меняется - PullRequest
1 голос
/ 27 мая 2020

Нужна помощь, я искал в Google, и мне не повезло.

Я пытаюсь обновить значение Rad ios -button в классе div "size-number". Это значение я хочу использовать в запросе ajax ниже. Когда я проверяю элемент, переключатель имеет обновленное значение кнопки, но когда я console.log его в jquery, он дает мне то же начальное значение, несмотря на то, что я выбираю. Я попытался установить радиокнопки на checked = "checked". Также я считаю, что это вопрос значения по умолчанию. Я также пробовал проверку ввода в пределах jquery. Кроме того, ive попытался сослаться на ввод ("input [name = 'radiobten']: checked") в jquery. любые предложения были бы очень признательны!

$(".size-number").click(function(){
  
  var modelid = $("#modelval").attr('value');
  console.log(modelid);
 
  $.ajax({
    url: '"Example API"',
    data:  [],
    dataType: 'json',
    type: "GET",
    success: function(res){
      var newarr = (res).filter(function(indx){
        return indx.model_cat_id == modelid
      });
      console.log(newarr)
      $('modelselect').slideToggle(200).html(res);
    }});
});
<?php foreach ($brands as $brand){ ?>
    <div class="search-select">
        <i class="fas fa-chevron-down"></i>
        <a href="/<?php echo $brand->full_slug.$urlSize; ?>">
        
        <?php echo $brand->name; ?></a>
        
    </div>
    <?php
        $slugCurrent = $brand->slug;
        foreach ($models as $model){
            if($model->brand_id == $brand->id){
            if(is_null($model->model_cat_id)){?>
                <div class="size-number" style="display: none;">
                    <a href="/<?php echo $brand->slug; ?>/<?php echo $model->slug_full.$urlSize; ?>" style="color: blue;"><?php echo $model->name; ?><input type="radio" id="modelval" name="radiobten" value="<?php echo $model->id?>"/></a>
                </div>

                <?php    
            }
                
            }
        }
    }?>

1 Ответ

1 голос
/ 28 мая 2020

У вас не может быть нескольких элементов с одинаковым идентификатором, например: modelval. Это всегда будет давать вам значение первого переключателя, независимо от того, какую кнопку вы выберете. Вместо этого используйте class для получения значения переключателя. Таким образом, при нажатии на div вы можете использовать $(this).find("yourclassname").attr('value') для получения значения только этой конкретной кнопки.

Код демонстрации :

$(".size-number").click(function() {
  //div->find closest modelval->value
  var modelid = $(this).find(".modelval").attr('value');
  console.log(modelid);

  $.ajax({
    url: '"Example API"',
    data: [],
    dataType: 'json',
    type: "GET",
    success: function(res) {
      var newarr = (res).filter(function(indx) {
        return indx.model_cat_id == modelid
      });
      console.log(newarr)
      $('modelselect').slideToggle(200).html(res);
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="size-number" >
  <a href="/<?php echo $brand->slug; ?>/<?php echo $model->slug_full.$urlSize; ?>" style="color: blue;">Abc<input type="radio" class="modelval" name="radiobten" value="1"/></a>
</div>
<div class="size-number" >
  <a href="/<?php echo $brand->slug; ?>/<?php echo $model->slug_full.$urlSize; ?>" style="color: blue;">Xyz<input type="radio" class="modelval" name="radiobten" value="2"/></a>
</div> 
...