在ajax返回的选择值上添加jquery onchange效果

时间:2015-09-25 10:57:04

标签: javascript jquery ajax combobox

好吧,我有一个从数据库中返回值的组合框。所有这些都是通过ajax发生的。用户可以单击一个名为添加新行的按钮,将生成一个新行,该行也将由组合框提供动力。 但是,我需要附上一个' onchange'事件发生在ajax返回的组合框中。

我试过了: -

<script type="text/javascript">
$('.combobox').change(function() {
  var va = $('.combobox').val();
  alert(va);
});
</script>

但这并没有奏效。我无法获得onchange事件的任何警报。

我必须尝试什么? 这是我的阿贾克斯: -

try
{
  $s = $conn->query("SELECT * FROM testing2");
}
catch(PDOException $e)
{
  echo $e->getMessage();
}

$selectBegin = "";
$selectBegin = 
  '
  <select class="combobox">
    <option value=""></option>
    ';
    $innerSelectString = "";
$selectMain = "";
while($customers = $s->fetch(PDO::FETCH_OBJ))
{
  //fix the select thing here
  $si = "<option value='$customers->indexid'>$customers->v1</option>";
  $selectMain .= $si;
}
$selectEnd = '</select>';
$selectFinal = $selectBegin . $selectMain . $selectEnd;
return $selectFinal;

有多个组合框,我有这个jquery代码来运行组合框: -

function load_content_rows()
{
  $(document).ready(function() {
    $.ajax({    //create an ajax request to load_page.php
      type: "GET",
      url: "ajax.php?requestid=1",             
      dataType: "html",   //expect html to be returned                
      success: function(response){                    
        $("#requestMaker").html(response); 
        $("#requestMaker").find(".combobox").combobox();
        //alert(response);
      }
    }); //ajax request end
  });
} //load_content
load_content_rows();

如何将onchange事件添加到我的所有组合框中? 以下是它们的外观: - enter image description here

2 个答案:

答案 0 :(得分:1)

从AJAX选项中删除此部分,这可能会节省很多问题:

dataType: "html",   //expect html to be returned

所以你的AJAX请求是这样的:

$(document).ready(function() {
  function load_content_rows() {
    $.ajax({                        //create an ajax request to load_page.php
      type: "GET",
      url: "ajax.php?requestid=1",             
      success: function(response){                    
        $("#requestMaker").html(response); 
        $("#requestMaker").find(".combobox").combobox();
                                    // alert(response);
      }
    });                             // ajax request end
  }                                 //load_content
  load_content_rows();
});

答案 1 :(得分:0)

我无法想到会阻止.change()处理<select>元素的任何事情,但是在您更换并重新创建组合框之后我没有看到您绑定事件ajax电话。这是一个新元素,因此需要再次绑定。在致电.change后,在成功函数中添加.combobox(),看看是否有效。