Newtouch.CascadeSelect = { cascade : function(id, value, callback) { var childId = document["_nt-cs_-childId:" + id]; $("#__"+childId+"__loading").show(); if (childId == undefined) { return; } this.clearChild(childId); var action = document['_nt-cs_-id:' + childId + '-action']; var params = document['_nt-cs_-id:' + childId + '-params']; var textField = document['_nt-cs_-id:' + childId + '-text']; var valueField = document['_nt-cs_-id:' + childId + '-value']; var defaultValue = document['_nt-cs_-id:'+ childId + '-defaultValue']; params.value = value; var parent = document['_nt-cs_-id:' + childId + '-parentId']; var path = ""; var xpath = params.xpath; // 修复职业选择多层级累计导致报错的问题 var prefix = xpath.substring(0,xpath.indexOf("/")); xpath = prefix+"/default/*"; path = this.searchGrandfather(parent,path); if(path != ""){ xpath = xpath.replace("*",path+"*"); params.xpath = xpath; } if(value==null||value==""){ $("#__"+childId+"__loading").hide(); return; } $("#"+id).attr("disabled",true); Newtouch.Ajax.sendParams(params, action, function(result) { $("#__"+childId+"__loading").hide(); if(result._value != undefined){ $('#'+childId).html(result._value); }else{ if (result && result.length > 0) { for ( var i = 0; i < result.length; i++) { $('#' + childId)[0].options.add(new Option(result[i][textField], result[i][valueField])) } $('#' + childId).val(defaultValue); } } $("#"+id).attr("disabled",false); if(callback){ callback($("#"+id)); } }, function(result) { $("#"+id).attr("disabled",false); alert(result); }); }, clearChild : function(childId) { //清理下级 if (childId) { $('#' + childId)[0].options.length = 1; } //需要递归重置子select为空集合 if (typeof document["_nt-cs_-childId:" + childId] != "undefined" && document["_nt-cs_-childId:" + childId]) { this.clearChild(document["_nt-cs_-childId:" + childId]); }else{ $('#' + childId)[0].options.selectedIndex = 0; } }, searchGrandfather : function(id,path){ var grandfather = document['_nt-cs_-id:' + id + '-parentId']; if(grandfather && grandfather != ""){ path = "*[@code='"+$("#"+grandfather).val()+"']/"+path; path = this.searchGrandfather(grandfather,path); } return path; } }