0

我有 2 个下拉菜单(select1 和 select2)和 1 个输入文本(速率)。在 select1 中选择一个值时,它在 select2 中发生变化。当我在 select2 中选择一个值时,该值出现在输入文本中。现在我想要更改输入文本以在 select1 触发器更改 select2 时更改。但这不起作用。我尝试改变,模糊......但它没有帮助。

任何的想法?

$('#select1').change( function() { 
    $.post("includes/functions.php", {select1: ""+$(this).val()+""},
      function(data){
        var objet = JSON.parse(data);       
        ...
        $("#select2").val(objet.select2value); //That works!
      }
}

进而:

$('#select2').bind('keyup blur change focus click', function(){
  $.post("includes/functions.php", {
    rate: ""+$(this).val()+"" }, function(data){
       var objet = JSON.parse(data);
       /* That works when I change select2 directly in the drop-down;
          not when select2 changed by changing select1 */
       document.form.rate.value = objet.rate;  
  });
});
4

1 回答 1

1

如何在第二个处理程序之外重构逻辑,并在两个事件上调用它:

$('#select1').change( function() { 
    $.post("includes/functions.php", {select1: ""+$(this).val()+""},
      function(data){
        var objet = JSON.parse(data);       
        ...
        $("#select2").val(objet.select2value);
        updateRate();
      }
}

$('#select2').change( function(){
  updateRate();
});

function updateRate() {
    $.post("includes/functions.php", {
        rate: ""+ $('#select2').val() +"" }, function(data){
           var objet = JSON.parse(data);
           document.form.rate.value = objet.rate;  
      });
}
于 2012-06-20T17:45:31.770 回答