日期:2014-05-16 浏览次数:20427 次
//设定 datagrid,点击行不自动选中checkbox
function bindRowsEvent(){
var panel = $('#tabName').datagrid('getPanel');
var rows = panel.find('tr[datagrid-row-index]');
rows.unbind('click').bind('click',function(e){
return false;
});
rows.find('div.datagrid-cell-check input[type=checkbox]').unbind().bind('click', function(e){
var index = $(this).parent().parent().parent().attr('datagrid-row-index');
if ($(this).attr('checked')){
$('#tabName'').datagrid('selectRow', index);
} else {
$('#tabName'').datagrid('unselectRow', index);
}
e.stopPropagation();
});
}
setTimeout(function(){
bindRowsEvent();
}, 10);
onClickRow:function(rowIndex){
var tax= $("tr[datagrid-row-index="+rowIndex+"] td[field=tax] input[type=text]");
var price = $("tr[datagrid-row-index="+rowIndex+"] td[field=price] input[type=text]");
var amount= $("tr[datagrid-row-index="+rowIndex+"] td[field=amount] input[type=text]");
var taxRate= $("tr[datagrid-row-index="+rowIndex+"] td[field=taxRate] input[type=text]");
var quantity = $("tr[datagrid-row-index="+rowIndex+"] td[field=inQuantity] input[type=text]");
amount.keyup(function(){
tax.val(parseFloat(amount.val()) + parseFloat(taxRate.val()));
});
tax.keyup(function(){
amount.val(parseFloat(tax.val()) - parseFloat(taxRate.val()));
});
}
var editors = $('#tt').datagrid('getEditors', rowIndex);
$.each(editors, function(index, element){
element.target.bind('click',function(e){
return false;
});
})
------解决方案--------------------
没用过datagrid,不过猜想它的selectRow方法应该是绑在table上的,然后判断event.target.parent() = tr,以此来选中行。
你的bindRowsEvent()方法里面给每个input添加事件(click or keyup)的时候都event.stopPropagation();
这样,input本身的事件不受影响,并且阻止了事件向上传播。