jQuery单选按钮值未更改

时间:2020-05-27 16:52:04

标签: php html jquery ajax radio-button

需要一些帮助,我已经搜索过Google并没有运气。

我正在尝试在div类“ size-number”中更新单选按钮的值。我想在下面的ajax请求中使用该值。当我检查元素时,单选按钮具有可用按钮的更新值,但是当我在jquery中进行console.log记录时,尽管我选择了它,但它仍具有相同的初始值。香港专业教育学院试图将单选按钮设置为checked =“ checked”。我也相信这是默认值的问题。香港专业教育学院还尝试了jQuery中的输入验证。另外,我也尝试在jquery中引用输入(“ input [name ='radiobten']:checked”)。任何建议将不胜感激!

$(".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 个答案:

答案 0 :(得分:1)

您不能有多个具有相同ID的元素,即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>