在第二个ajax完成后,如何选择输入选项,jQuery

时间:2018-12-21 02:13:05

标签: php jquery ajax

我正在使用ajax将数据从mysql加载到php。我想为我的网站创建编辑功能。此编辑将是模态的。 在单选输入类别已加载先前的ajax之后,按选项(子类别)的选择输入将由ajax加载。

我尝试了几个jquery事件来更改选择选项,但是没有人起作用。 这是我的模式文件中的脚本代码。

<script>    
    $(document).ajaxComplete(function() {
        $("#editexp'.$poz.'").on("shown.bs.modal", function(){
            $("input[name=payment'.$poz.'][value='.$method.']").prop("checked", true);

            $("input[name=kategoria'.$poz.'][value='.$catid.']").prop("checked", true);

            var category = '.$catid.';
            var poz = '.$poz.';
            $.ajax({
                url:"expense_subcategory_change.php",
                method:"POST",
                data:{category:category,
                    poz:poz
                },
                success:function(data){
                    $("#subcategory'.$poz.'").html(data);
                }
            });

            $("input[type=radio][name=kategoria'.$poz.']").change(function(){

                var category = $(this).val();
                var poz = '.$poz.';
                $.ajax({
                    url:"expense_subcategory_change.php",
                    method:"POST",
                    data:{category:category,
                        poz:poz
                    },
                    success:function(data){
                        $("#subcategory'.$poz.'").html(data);
                    }
                });
            });


        });
    });

    $("#subcategory'.$poz.'").ajaxComplete(function() {
         $("#subcategory'.$poz.' ").find("option").each( function() {
              var $this = $(this);
              if ($this.val() == '.$subcatid.') {
                 $this.prop("selected","selected");
                 return false;
              }
         });
    });
</script>

我也尝试过:

    $("#subcategory'.$poz.'").ajaxComplete(function() {
          $("#subcategory'.$poz.' option[value='.$subcatid.']").prop("selected","selected");
    });

这两个函数在#subcategory中都没有ajaxComplete,在文档中没有第二个ajaxComplete

正在加载带有选项的输入,但始终选择第一个选项。

这是我的expense_subcategory_change代码的主要部分:

$result = mysqli_query($connection,"$sql_query");

$output .= '<select class="mb-3 w-50-100 " name="subcategory'.$poz.'">';

while($row = mysqli_fetch_array($result))
{
    $output .= '<option value="'.$row['id'].'" >'.$row['sub'].'</option>';  
}

$output .= '</select>';

echo $output;

2 个答案:

答案 0 :(得分:1)

问题出在您的选择器中。您在选择元素中使用“名称”,但在“ dom”中搜索该元素。将您的PHP代码更改为:

$output .= '<select class="mb-3 w-50-100 " id="subcategory'.$poz.'">';

我用您提供的第二种方法进行了测试,因为它看起来更干净

$("#subcategory'.$poz.' option[value='.$subcatid.']").prop("selected","selected");

在此处https://jsfiddle.net/79kugn60/中查看解决方案(简化代码)

答案 1 :(得分:0)

如果您正在使用任何事件。尝试在您的函数中绑定该事件。这样每次事件都会被绑定。射击后。