日期:2014-05-16 浏览次数:20359 次
//设定 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本身的事件不受影响,并且阻止了事件向上传播。