//定义自动生成表用来组装的Id var tid=0; //定义制程名称 var proName=""; //定义制程代码 var proCode=""; var dept=""; var ngProcessNum=""; //定义不良项名称数组 var ngtNames=new Array(); //组装一个不良项Map var ngtMap=new Array(); //组装一个制程Map var processMap=new Array(); $("#processNgNum").bind('blur',function(){ //获取制程不良数 ngProcessNum=$("processNgNum").val(); //1、获取部门 dept = $("#proDepartment option:selected").val(); if(dept != "" && ngProcessNum!=""){ //删除上一次生产的tr $(" #processInfoTr ~ tr").remove() $.ajax({ url:"qc/produDataCollection_findManyInfoBydepartment.action", data: {"dept": dept}, type: "post", async: false,//非异步 success: function(data){ if(data != null && data != "" && data != undefined){ if("success" == data.ngItemMsg){ var toNgproceeTable=$("#processInfoTr") toNgproceeTable.empty() toNgproceeTable.append("<td >编号ID</td><td >制程名称</td><td >制程代码</td>" + "<td >不良项名称</td><td >不良项代码</td> <td>数量</td>"); var resultDate=data.ngItemList; $.each(resultDate, function(index, element){ ngtNames.push(element.ngtName); //赋值不良项map ngtMap[element.ngtName]= element.ngtCode; //赋值制程Map processMap[dept+element.ngtName]= element.nid; //为proNameu赋值 proName=element.processInfo.proName; //为proCode赋值 proCode=element.processInfo.proCode; }); $.each(resultDate, function(index, element){ toNgproceeTable.after("<tr id='ngtTr"+tid+"'>" + "<td><span id='spanNgId"+tid+"'></span></td>" + "<td>"+proName+"</td>" + "<td>"+proCode+"</td>" + "<td><input type='text' size='12px;' name='tdNgtName' onchange='doAddTr();' id='ngitem"+tid+"'></td>" + "<td><span id='spanNg"+tid+"'></span></td>" + "<td style='width: 120px'><input type='text' size='12px;' name='ncProcess' " + " onkeyup='value=value.replace(/\\D/g,\"\")' id='nc"+tid+"'></td>"+ "</tr>" ); if(index==0){ return false; } }); tid=tid+1; }else{ layer.alert(data.message3,{ icon:5, closeBtn:false, title:false }); } } else { layer.alert(data.message,{ icon:5, closeBtn:false, title:false }); } }, error:function(){alert( alert("没有找到相关信息,后台报错!"));} }); }else{ $(" #processInfoTr ~ tr").remove() $("#processId").empty() $("#line") } }); }); $("#ngitem"+tid).bind('blur',function(){ alert("ok"); var ngName= $("#ngitem0").val(); alert(ngName) if(ngName!=""){ //判断用户输入的不良项名称是否存在ngtNames数组中 if($.inArray(ngName,ngtNames)<0){ layer.alert("找不到不良项代码,请检查不良项名称",{ icon:5, closeBtn:false, title:false }); } else{ $("#spanNg"+tid).text(ngtMap[ngName]); $("#spanNgId"+tid).text(processMap[dept+ngName]); var toNgtTr=$("#ngtTr"+tid) toNgtTr.after("<tr id='ngtTr"+tid+"'>" + "<td><span id='spanNgId"+tid+"'></span></td>" + "<td>"+proName+"</td>" + "<td>"+proCode+"</td>" + "<td><input type='text' size='12px;'id='ngitem"+tid+"'></td>" + "<td><span id='spanNg"+tid+"'></span></td>" + "<td style='width: 120px'><input type='text' size='12px;' name='ncProcess' " + " onkeyup='value=value.replace(/\\D/g,\"\")' id='nc"+tid+"'></td>"+ "</tr>" ); } tid=tid+1; } });
需求是这样的,
现在的问题是,当我ajax发送请求读回数据后,我为动态拼成的表格input 里面的ID 获取不到。如果我在ajax 请求里面做change事件就只能第一次起效。
还请大家指导一下,谢谢!
控件设置class属性delegate绑定 change事件。###### 有一种jquery方法叫live
在live以前版本,也可以每次清除了bind再bind。
######change事件就只能第一次起效,是你绑定事件方式不对,改用on去绑定事件,比如:<ul>里面有一些<li>,有部分<li>是动态生成的,如果给<li>绑定点击事件时用bing或者click,那么动态生成的无效果, 可以这样用 $("ul").on("click","li",function(){ // do something});
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。