所以,我有一个动态生成的SELECT,它从PHP-mySQL表中填充。 我还有一个关于选择的on change事件,它处理用户更改页面上所选值的时间。当触发change事件时,我使用该选择选项中的值填充3个输入框。
一切正常,但是当我使用SELECT进入(或刷新)页面时,SELECT会被填充,但是onChange事件不会触发。实际上我确信onchange会被触发,但是这会在填充SELECT之前发生,所以没有值可以提供。
我能做什么? 如何在正确填充 SELECT 之后调用更改事件?
我在onChange的代码是: 基本上,我希望输入名称和id = pux 的输入填充select选项的data-foo值。我的意思是,select的选项结构如下: 当然目的地输入框是: 就像我说的那样:该事件在手动更改选择方面效果很好,但在页面显示(document.ready)上,pux输入框设置为空...空...
我希望能够在填充选择后触发更改事件。因为,在填充选择后,选择框会自动选择第一个选项并显示。 我尝试使用$(document)。 on(“更改”,function()...在document.ready之外但是没有变化 我也尝试设置输入的值,在从php填充SELECT之后,但id似乎不起作用。我把代码放在错误的地方,或者我不知道该怎么想...... 调用php以填充它的代码是: 仍然没有... 任何帮助将不胜感激。
谢谢$(document).ready(function(){
$('#myselect').change(function(){
var selected = $(this).find('option:selected');
$('#pux').val(selected.data('foo'));
}).change();
});
<option id="1" value="whatever" data-foo="something_important">First option</option>
<input type="text" name="pux" id="pux" value="0" />
$('#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'));
});
});
答案 0 :(得分:1)
根据您的问题,似乎动态填充选择列表不会调用change()事件。因此,您可能需要考虑将更改事件处理程序提取到单独的过程中:
function populatePux() {
var selected = $('#myselect option:selected');
$('#pux').val(selected.data('foo'));
}
$(document).ready(function(){
$('#myselect').change(populatePux);
});
然后,您可以在用于该特定流程的函数中填充#myselect后立即运行populatePux()
。