Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery为动态创建的下拉列表设置onchange事件_Javascript_Jquery - Fatal编程技术网

Javascript 使用jquery为动态创建的下拉列表设置onchange事件

Javascript 使用jquery为动态创建的下拉列表设置onchange事件,javascript,jquery,Javascript,Jquery,我正在创建两个这样的下拉列表 var drp_nt = $('<select />', { 'id' : 'drp_' + nt, 'name' : 'drp_' + nt+'[]', 'onchange' : check_data(),

我正在创建两个这样的下拉列表

var drp_nt = $('<select />', {
                               'id'     : 'drp_' + nt,
                               'name'   : 'drp_' + nt+'[]',
                               'onchange' : check_data(),
                               'multiple': true});

var drp_cnt = $('<select />', {
                              'id'     : 'drp_' + cnt,
                              'name'   : 'drp_' + cnt+'[]',
                              'onchange' : check_data(),
                              'multiple': true});
function check_data()
{
    if($("select option:selected").length==2)
        alert('Two Dropdown Selected');
    else
        alert($("select option:selected").length);
}
但问题是,没有调用check_data()函数

我怎样才能做到这一点

这是我的HTML

<div id="cont_drp_nt" class="drp_container">
<img id="drp_nt_loader" class="loader_img" src="images/ajax-loader-1.gif" style="display: none;">
<select id="drp_nt" name="drp_nt[]" multiple="multiple" style="display: none;">
<option value="http://api.hasoffers.com/v3/Affiliate_Offer.json">http://api.hasoffers.com/v3/Affiliate_Offer.json</option>
</select>
<div class="btn-group">
<button class="multiselect dropdown-toggle btn btn-default" data-toggle="dropdown" type="button" title="http://api.hasoffers.com/v3/Affiliate_Offer.json">
<ul class="multiselect-container dropdown-menu" style="max-height: 200px; overflow-y: auto; overflow-x: hidden;">
</div>
</div>

http://api.hasoffers.com/v3/Affiliate_Offer.json
这是完整的脚本

function get_data(v)
{
    var cnt = 'cnt';
    var ctg = 'ctg';
    var api = 'api';
    var nt = 'nt';
    $('#drp_'+cnt).remove(); 
    $('#drp_'+ctg).remove(); 
    $('#drp_'+api).remove(); 
    $('#drp_'+nt).remove();
    $('.btn-group').remove();



    $('#drp_'+cnt+"_loader").show();
    $('#drp_'+ctg+"_loader").show();
    $('#drp_'+api+"_loader").show();
    $('#drp_'+nt+"_loader").show();

    $.post("ajax.php",{'version':v,'func':'get_nt'},
                function(data)
                {
                    $('#drp_'+nt+"_loader").hide();
                    var drp_nt = $('<select />', {
                                     'id'     : 'drp_' + nt,
                                     'name'   : 'drp_' + nt+'[]',
                                     'change' : check_data(),
                                     'multiple': true});
                    for(i=0;i<data.length;i++)
                    {
                            content ="<option value="+data[i].network+">"+data[i].network+"</option>";
                            $(drp_nt).append(content);
                    }
                    $('#cont_drp_'+nt).append(drp_nt);
                    $(drp_nt).multiselect({
                                includeSelectAllOption: true,
                                enableFiltering: true,
                                maxHeight: 200,
                                allSelectedText: 'No option left ...'
                            });
                }, "json");

    $.post("ajax.php",{'version':v,'func':'get_api'},
                function(data)
                {
                    $('#drp_'+api+"_loader").hide();
                    var drp_api = $('<select />', {
                                     'id'     : 'drp_' + api,
                                     'name'   : 'drp_' + api+'[]',
                                     'multiple': true});
                    for(i=0;i<data.length;i++)
                    {
                            content ="<option value="+data[i].api+">"+data[i].api+"</option>";
                            $(drp_api).append(content);
                    }
                    $('#cont_drp_'+api).append(drp_api);
                    $(drp_api).multiselect({
                                includeSelectAllOption: true,
                                enableFiltering: true,
                                maxHeight: 200,
                                allSelectedText: 'No option left ...'
                            });
                }, "json");



    $.post("ajax.php",{'version':v,'func':'get_category'},
                function(data)
                {
                    $('#drp_'+ctg+"_loader").hide();
                    var drp_ctg = $('<select />', {
                                     'id'     : 'drp_' + ctg,
                                     'name'   : 'drp_' + ctg+'[]',
                                     'multiple': true});
                    for(i=0;i<data.length;i++)
                    {
                            content ="<option value="+data[i].category+">"+data[i].category+"</option>";
                            $(drp_ctg).append(content);
                    }
                    $('#cont_drp_'+ctg).append(drp_ctg);
                    $(drp_ctg).multiselect({
                                includeSelectAllOption: true,
                                enableFiltering: true,
                                maxHeight: 200,
                                allSelectedText: 'No option left ...'
                            });
                }, "json");



    $.post("ajax.php",{'version':v,'func':'get_country'},
                function(data)
                {
                    $('#drp_'+cnt+"_loader").hide();
                    var drp_cnt = $('<select />', {
                                     'id'     : 'drp_' + cnt,
                                     'name'   : 'drp_' + cnt+'[]',
                                     'multiple': true});
                    for(i=0;i<data.length;i++)
                    {
                            content ="<option value="+data[i].country+">"+data[i].country+"</option>";
                            $(drp_cnt).append(content);
                    }
                    $('#cont_drp_'+cnt).append(drp_cnt);
                    $(drp_cnt).multiselect({
                                includeSelectAllOption: true,
                                enableFiltering: true,
                                maxHeight: 200,
                                allSelectedText: 'No option left ...'
                            });
                }, "json");
}
函数获取数据(v)
{
var cnt='cnt';
变量ctg='ctg';
var-api='api';
var nt='nt';
$('#drp'+cnt).remove();
$('#drp'+ctg).remove();
$('#drp'+api).remove();
$('#drp'+nt).remove();
$('.btn group').remove();
$('#drp'+cnt+“_loader”).show();
$(“#drp"+ctg+“"加载程序”).show();
$('#drp'+api+“_加载器”).show();
$(“#drp"+nt+“"加载程序”).show();
$.post(“ajax.php,{'version':v,'func':'get\u nt'},
功能(数据)
{
$('#drp_'+nt+“loader”).hide();
var drp\u nt=$(''{
“id”:“drp_uuu”+nt,
'name':'drp_u'+nt+'[]',
“更改”:检查数据(),
“多个”:true});

对于(i=0;i此函数可以在页面加载时运行,它将捕获随后添加到页面的任何选定元素的更改事件

$(document).on("change", "select", function(){
    // do stuff
});

终于找到了!您必须像这样在:{…}
上使用

var drp_nt = $('<select />', {
    'id': 'drp_' + nt,
    'name': 'drp_' + nt + '[]',
    on: {
        change: check_data
    },
    'multiple': true
});

var drp_cnt = $('<select />', {
    'id': 'drp_' + cnt,
    'name': 'drp_' + cnt + '[]',
    on: {
        change: check_data
    },
    'multiple': true
});
var drp\u nt=$(''{
“id”:“drp_uuu”+nt,
'name':'drp_u'+nt+'[]',
关于:{
更改:检查数据
},
“多重”:真
});
var drp_cnt=$(''{
'id':'drp_uu'+cnt,
'name':'drp_u'+cnt+'[]',
关于:{
更改:检查数据
},
“多重”:真
});

正如在

中一样,我希望在创建下拉列表的过程中设置它…你所说的意思是,在创建之后,我需要设置函数。我不是给你投票,但回答很差。对不起,我应该解释得更好。这个方法应该处理在它之后添加到文档中的任何未来选择的更改事件是运行的。添加下拉列表后,您无需运行它。可能的重复项您是否看到您的上一个帖子问题,我为此给出了我想知道的,为什么它不能以我提供的格式工作…我知道它是这样工作的…可能是某些打字错误,它不起作用…未分配
更改
事件,如何生成
se选择
准确?你能在JSFIDLE上发布代码吗?在这个问题上发布了我的全部代码…不能在js FIDLE上发布。它有很多代码,也可以用php运行