填充SELECT后调用change事件?

时间:2013-07-10 22:05:20

标签: jquery-selectors jquery

所以,我有一个动态生成的SELECT,它从PHP-mySQL表中填充。 我还有一个关于选择的on change事件,它处理用户更改页面上所选值的时间。当触发change事件时,我使用该选择选项中的值填充3个输入框。

一切正常,但是当我使用SELECT进入(或刷新)页面时,SELECT会被填充,但是onChange事件不会触发。实际上我确信onchange会被触发,但是这会在填充SELECT之前发生,所以没有值可以提供。 我能做什么? 如何在正确填充 SELECT 之后调用更改事件?

我在onChange的代码是:

$(document).ready(function(){
    $('#myselect').change(function(){
      var selected = $(this).find('option:selected');
      $('#pux').val(selected.data('foo'));
    }).change();
});

基本上,我希望输入名称和id = pux 的输入填充select选项的data-foo值。我的意思是,select的选项结构如下:

<option id="1" value="whatever" data-foo="something_important">First option</option>

当然目的地输入框是:

<input type="text" name="pux" id="pux" value="0" />

就像我说的那样:该事件在手动更改选择方面效果很好,但在页面显示(document.ready)上,pux输入框设置为空...空... 我希望能够在填充选择后触发更改事件。因为,在填充选择后,选择框会自动选择第一个选项并显示

  • 我尝试使用$(document)。 on(“更改”,function()...在document.ready之外但是没有变化

  • 我也尝试设置输入的值,在从php填充SELECT之后,但id似乎不起作用。我把代码放在错误的地方,或者我不知道该怎么想......

调用php以填充它的代码是:

$('#myselect').toggle('fast', function(){
  $(this).html(ajaxloader);
  $(this).toggle('fast', function(){
    $.get(loadurl, function(data){
      $('#myselect').html(data);
      $('#myselect').selectmenu("refresh",true);
    },'html');
// and here I placed my assignment
    var selx  = $('#myselect').find('option:selected');
    $('#pux').val(selx.data('foo'));
  });
});

仍然没有...

任何帮助将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:1)

根据您的问题,似乎动态填充选择列表不会调用change()事件。因此,您可能需要考虑将更改事件处理程序提取到单独的过程中:

function populatePux() {
  var selected = $('#myselect option:selected');
  $('#pux').val(selected.data('foo'));
}

$(document).ready(function(){
    $('#myselect').change(populatePux);
});

然后,您可以在用于该特定流程的函数中填充#myselect后立即运行populatePux()