Php 如何在.done()ajax中的“change”事件之后运行jquery?
我使用的是PHP Codeigniter,jQuery2.0.3 我有一个表单包含文本框和html表格。html表中的两列是casaded下拉列表 级联下拉列表,比如下拉列表A和下拉列表B,默认情况下下拉列表A将列出10个选项,这是一个项目类别。 而下拉列表B则不列出任何内容。当A更改时,B将填充与下拉列表A及其类别相关的一些选项,并在中完成 $document.onchange,选择[name^='ast_group'],函数 下面 当我从复选框中选择一个值并单击该页面上的按钮时,它将运行一个JS函数 通过ajax从MySQL中提取数据并将其放入my form>input元素中, 还有HTML表。但是数据库只有下拉列表B的值,而不是下拉列表a的值 第一个JS函数运行是dialog\u purchase\u request\u pull\u datadata\u purchase\u request; 此函数中的ajax请求在成功后调用JS函数insert\u detailresult 在insert_detail函数中,一个for循环调用另一个函数add_rowtableID,data_ajax; 在这个add_row函数中,我调用ajax来获取下拉列表A的值 我已经得到了dropdown A的值,但是我错过了一些东西,所以我不能直接把它放进去。 在这一行: 我已经更改了下拉列表A的选项,并触发“更改”事件,以便下拉列表B将填充相关选项。 这是我找不到的地方:$ast_sub_group+name_cnt.valdata_ajax.item_group; 这样,它将在触发“更改”事件后更新下拉菜单B选项 这是我的JS: 我感谢你的帮助。谢谢Php 如何在.done()ajax中的“change”事件之后运行jquery?,php,jquery,ajax,codeigniter,Php,Jquery,Ajax,Codeigniter,我使用的是PHP Codeigniter,jQuery2.0.3 我有一个表单包含文本框和html表格。html表中的两列是casaded下拉列表 级联下拉列表,比如下拉列表A和下拉列表B,默认情况下下拉列表A将列出10个选项,这是一个项目类别。 而下拉列表B则不列出任何内容。当A更改时,B将填充与下拉列表A及其类别相关的一些选项,并在中完成 $document.onchange,选择[name^='ast_group'],函数 下面 当我从复选框中选择一个值并单击该页面上的按钮时,它将运行一个
JMS您是否尝试了.done方法
$.ajax({
url: "test.html",
context: document.body
}).done(function() {
$( this ).addClass( "done" );
});
这并没有直接解决这个问题,但我相信它作为一个答案比作为一个简单的评论更有价值 您的设置似乎过于复杂且不是最优的。您可以通过使用可重用组件(例如用于列表的组件)大大降低复杂性,也许还可以实现Ajax搜索功能或将列表的B数据设置为列表A更改 对于Ajax搜索,只需禁用列表B,直到在列表A中选择某个内容,然后使用适当的Ajax设置配置列表B,即使用列表A中的选定值配置URL参数 或者,您可以简单地从列表A更改事件中设置列表B的值
您尝试做的事情以前已经做过很多次了,但我认为您的方法可能不是最好的方法。TL;me博士,我认为你应该尽量减少这个问题,不管问题是什么?dialog\u purchase\u request\u pull\u data的目的是什么?在提供的代码中永远不会调用它。另外,add_row对每个添加的行都进行Ajax调用。。出于好奇,这个代码向您发出了多少初始请求?是的,我没有输入调用dialog\u purchase\u request\u pull\u data的代码,因为它已经在运行了。我只需要找到如何使用jQuery选择下拉列表B,并在:$ast\u group+name\u cnt.valobj[0].group\u parent\u id.change;in.done方法已完成执行。是的,我执行了。这里的问题是,在.done函数中更改下拉列表A后,我错过了一些使我无法更改下拉列表B的内容。因为在.done函数中,下拉列表A已根据ajax调用和触发器.change事件设置为特定值。现在我必须将data_ajax.item_组放到下拉列表B中,下拉列表A的更改事件中填充了下拉列表B的选项。感谢您的解释和建议,我现在正试图重新构造我的编码方式,使之更简单。。而且,那些select2也不错。。非常感谢。
<script>
//populate sub group if group changed
$(document).ready(function(){
$(document).on("change","select[name^='ast_group']",function(){
var name_str = $(this).attr('id');
var name_len = name_str.length;
var name_cnt = name_str.substring(name_len-1,name_len);
$.ajax({
url:"../asset/ajax_get_sub_group/"+$(this).val(),
success: function(result){
var detail_result = JSON.parse(result);
$("select[id^='ast_sub_group"+name_cnt+"']").find('option').remove();
$("select[id^='ast_sub_group"+name_cnt+"']").append("<option value='-1'>Select..</option>");
for (var i =0; i <detail_result.length;i++){
$("select[id^='ast_sub_group"+name_cnt+"']").append("<option value='"+detail_result[i].group_id+"'>"+detail_result[i].group_name+"</option>");
}
}
});
});
});
</script>
<script>
function add_row(tableID,data_ajax){
var name_str = $('#'+tableID+' > tbody > tr:last > td:eq(1) select').attr('id');
if(typeof(name_str)=="undefined"){
name_str = "ast_group0";
}
var name_len = name_str.length;
var name_cnt = parseInt(name_str.substring("ast_group".length,name_len)) + 1;
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
//select init
var ast_group = '<?php echo sw_CreateSelect('ast_group',$ddl_asset_group,'group_id','group_name',NULL,array('initialvalue'=>'-1','initialdisplay'=>'Select..'));?>';
var ast_group_buffer = $(ast_group);ast_group_buffer.attr('name','ast_group[]');ast_group_buffer.attr('id','ast_group'+name_cnt);
var ast_sub_group = '<?php echo sw_CreateSelect('ast_sub_group',$ddl_asset_sub_group,'group_id','group_name',NULL,array('initialvalue'=>'-1','initialdisplay'=>'Select..'));?>';
var ast_sub_group_buffer = $(ast_sub_group);ast_sub_group_buffer.attr('name','ast_sub_group[]');ast_sub_group_buffer.attr('id','ast_sub_group'+name_cnt);
var del_link = '<i class="fa fa-ban del_row"></i> ';
var newRow =
"<tr height='30px'>"+
"<td align='center'>"+del_link+"<span>"+rowCount+"</span>"+"</td>"+
"<td>"+ast_group_buffer.get(0).outerHTML+"</td>"+
"<td>"+ast_sub_group_buffer.get(0).outerHTML+"</td>"+
"<td><input type='text' name='ast_name[]' id='ast_name"+name_cnt+"' class='form-control' value='"+data_ajax.item_name+"'></td>"+
"<td><input type='number' name='ast_qty[]' id='ast_qty"+name_cnt+"' class='form-control' value='"+data_ajax.item_qty+"'></td>"+
"<td><input type='text' name='ast_price[]' id='ast_price"+name_cnt+"' class='form-control' value='"+data_ajax.item_price+"'></td>"+
"<td><input type='text' name='sub_total[]' id='sub_total"+name_cnt+"' class='form-control' value='"+data_ajax.item_total+"'readonly></td>"+
"</tr>";
//select option
if($('#'+tableID+' > tbody > tr').length == 0){
$('#'+tableID+' > tbody ').append(newRow);
}else{
$('#'+tableID+' > tbody > tr:last').after(newRow);
}
var ajax_result = [];
$.ajax({
url:"<?php echo base_url('asset/ajax_get_parent_group');?>",
data: {ajax_group_id:data_ajax.item_group},
dataType: "json"/*,
success: function(result){
//return result;
//alert(result[0].group_parent_id);
//$("#ast_group"+name_cnt).val(result[0].group_parent_id).change();
}*/
}).done(function (obj){
alert('group change');
$("#ast_group"+name_cnt).val(obj[0].group_parent_id).change();
$("#ast_sub_group"+name_cnt).val(data_ajax.item_group);
/*}).done(function (obj){
alert('wait group change for sub group');
$("#ast_sub_group"+name_cnt).val(data_ajax.item_group);*/
});
}
function dialog_purchase_request_pull_data(data_purchase_request){
$("#doc_ref").val(data_purchase_request['doc_num']);
$("#request_for").val(data_purchase_request['request_for']);
$("#request_dept").val(data_purchase_request['request_dept']);
$("#doc_note").val(data_purchase_request['doc_note']);
var doc_id = data_purchase_request['doc_id'];
var data_ajax_raw = $.ajax({
url:"<?php echo base_url('purchase/ajax_purchase_request');?>",
data: {purreq:doc_id},
dataType: "json",
success: function(result){
insert_detail(result);
}
});
}
function insert_detail(data){
var tbl = document.getElementById("table_detail");
var tbl_lastrow = tbl.rows.length -1;
document.getElementById("table_detail").deleteRow(tbl_lastrow); //delete last row
var data_ajax = Object();
for (var datum in data){
data_ajax.item_name = data[datum].item_name;
data_ajax.item_qty = data[datum].item_qty;
data_ajax.item_price = data[datum].item_price;
data_ajax.item_total = data[datum].item_total;
data_ajax.item_group = data[datum].item_group;
add_row('table_detail',data_ajax);
}
/*$("#ast_group1").val(1).change();
$("#ast_sub_group1").val(24);
$("#ast_group2").val(4).change();
$("#ast_sub_group2").val(101);*/
addRow("table_detail"); //add empty row
}
</script>
$.ajax({
url: "test.html",
context: document.body
}).done(function() {
$( this ).addClass( "done" );
});