function isTheSameComm(_tblName,_commodityNo){ var hasComm = 0; var checkArray = new Array(); //判断是否出现重复的商品编号 var cObject;
var rows = $(_tblName).datagrid('getRows'); for( var i=0; i < rows.length; i++ ){ cObject = {"commodityId":rows[i].commodityId,"commodityNo":rows[i].commodityNo};
的确执行了3 次 ~ 如果里面写入 alert( 'test' ); 第一次就弹出一次 ,第二次的时候就弹出 2 次,以此类推~
在点击可编辑的单元格的时候。会有一个 status=0,1,2
当status=0 是表示进入编辑
当status=1 是表示可以编辑
当status=2 是表示编辑完成如果我们进入编辑的时候出发一个函数,有如下代码:if(status==0){
your_function();
}希望对楼主有些帮助。
$("#types-window").window('open'); $('#commOfTypes').tree({
checkbox: false,
url: 'commoditiesTreeAction.action?pId=0',
animate : true, //平滑效果
cascadeCheck : false, //是否联动
onlyLeafCheck : false, //是否只有 "叶" 才显示 checkbox
onClick:function(node){
$("#commOfTypes").tree('toggle',node.target);
},
onBeforeExpand:function(node,param){
$('#commOfTypes').tree('options').url = 'commoditiesTreeAction.action?pId='+node.id;
},
onDblClick: function(node){
if (node){
var children = $('#commOfTypes').tree('getChildren', node.target);
} else {
var children = $('#commOfTypes').tree('getChildren');
}
var s = '';
for(var i=0; i<children.length; i++){
s += children[i].text + ',';
}
if( s == ''){
var totalRow = 0; var detailArray = new Array();
var detailObject;
if( '' != comeMark ){
$(".datagrid-row-editing td[field=commodityNo] input[type=text]").val(node.id); var _tblName = "";
if( "enterPurchase" == comeMark){
_tblName = '#' + 'purchaseDetails';
}else if( ...){
...
}
//判断选择的商品是否已经存在
var hasCommodity = isTheSameComm(_tblName, node.id);
if( hasCommodity == 0 ){
$(_tblName).datagrid('acceptChanges');
var lastIndex = $(_tblName).datagrid('getRows').length;
totalRow = lastIndex;
for( var rows=0; rows < lastIndex; rows++){
detailObject = new Object();
$(_tblName).datagrid('selectRow',rows); //指定行选中
var currentRow =$(_tblName).datagrid("getSelected");
if( "enterPurchase" == comeMark ){
detailObject = {"commodityId":currentRow.commodityId,...};
}else if( ...){
detailObject = {"commodityId":currentRow.commodityId,...};
}
if( null != currentRow.commodityId || '' !=currentRow.commodityId ){
detailArray.push(detailObject);
}
$(_tblName).datagrid('unselectRow',rows); //取消指定行选中
}
$(_tblName).datagrid({'url':'getCommodityDetails.action?jsonResult='+$.toJSON(detailArray)+'&totalRow='+totalRow}); $("#types-window").window('close'); }
}else{
$("#s-commNo").val(node.id);
$("#s-commId").val(node.attributes.commodityId);
$("#types-window").window('close');
} } }
});
}
function isTheSameComm(_tblName,_commodityNo){
var hasComm = 0;
var checkArray = new Array(); //判断是否出现重复的商品编号
var cObject;
var rows = $(_tblName).datagrid('getRows');
for( var i=0; i < rows.length; i++ ){
cObject = {"commodityId":rows[i].commodityId,"commodityNo":rows[i].commodityNo};
if( null != rows[i].commodityId || '' !=rows[i].commodityId ){
checkArray.push(cObject);
}
} if( checkArray.length > 0 ){
for( var i = 0 ; i < checkArray.length; i++){
if( _commodityNo == checkArray[i].commodityNo ){
$.messager.alert('错误提示','不能选择相同的商品!','error',function(){
var currentRow =$(_tblName).datagrid("getSelected");
currentRow.commodityNo = '';
});
hasComm = 1;
}
}
}
return hasComm;}
commNo.unbind().dblclick(function(){
alert('dblclick')
});
这个说到点上了,应该是你多次点击了datagrid的row,绑定了多次事件,导致执行多次commOfTypesTree函数。commNo.unbind('dblclick').dblclick(function(){
commOfTypesTree('enterSales',rowIndex);//这里是执行双击树叶节点的操作(与弹出树之前没有关系)
treeIndex = rowIndex; //保存当前双击的行
});