2012-08-10 71 views
0

我一直在努力的功能,其中,我需要實現自動保存在表的每個單元格,並且,如果該單元格是最後一行的最後一個單元格,添加一個新行。新克隆的行也應該具有相同的綁定模糊事件。我可以添加新行,但事件沒有被觸發。這裏是代碼.. 請幫助卡住長現在..Jquery事件綁定新克隆行

$("#myTable1").live("blur", function(){ 
     var elementValue = document.getElementById("<%=count%>").value.toString(); 
     var value = $("#<%=count%>_hidden").attr('value').toString(); 
     var qualValue = "<%=qualValue %>"; 
    var sequenceNumber = "<%=sequenceNumber %>"; 
    var parentAttrbtInstId = "<%=parentAttrbtInstId %>"; 
    var parentId = "<%=parentId %>"; 
    var attrbtId = "<%=attrbtId %>"; 
    var attrbtInstId = $("#<%=count%>_hidden").attr('attrbtInstId').toString(); 
    var rootId = "<%=rootId %>"; 
    var itemId = "<%=item.getItemId()%>"; 
    var currentCount = "<%=count%>"; 
    var cellCount = "<%=cellLimit%>"; 
    var rowId = "row_<%=rowCounter%>"; 
    var rowCount = <%=rowCounter%>; 



     if(elementValue.toLowerCase() != value.toLowerCase()){ 
     $.ajax({ 
      url: "<portlet:resourceURL id='autoSaveAction' />", 
      type: 'POST', 
      dataType: 'json', 
      data: { elementValue:elementValue,qualValue:qualValue,sequenceNumber:sequenceNumber,parentAttrbtInstId:parentAttrbtInstId,parentId:parentId,attrbtId:attrbtId, 
       attrbtInstId:attrbtInstId,rootId:rootId,itemId:itemId}, 
      success : function(response) { 
       if (response.status == "SUCCESS") { 
        jsonstr=JSON.stringify(response.result); 
var temp=JSON.parse(jsonstr); 
$("#<%=count%>_hidden").attr('attrbtInstId',temp.attrInstId); 
document.getElementById("<%=count%>_hidden").value = temp.attrValue; 
if(currentCount == cellCount){ 
cloneRow = $("#myTable1 tr:last").clone(true); 

    cloneRow.attr({ 
     'id': function(_, id) { 
return "row_"+(rowCount+1); 
     }    
    }).end().appendTo("#myTable1"); 

cloneRow.find("input").each(function() { 
    $(this).attr({ 
     'id': function(_, id) { 
if (id.indexOf("hidden")!= -1){ 
return currentCount + "_hidden"; 
}else{ 
     return ++currentCount; 
} 
     }    
    }); 
    }).end().appendTo("#myTable1"); 
cloneRow.find("select").each(function() { 
    $(this).attr({ 
     'id': function(_, id) { 
     if (id.indexOf("hidden")!= -1){ 
return currentCount + "_hidden"; 
}else{ 
     return ++currentCount; 
} 
}    
    }); 
    }).end().appendTo("#myTable1"); 
cloneRow.find("textarea").each(function() { 
    $(this).attr({ 
     'id': function(_, id) { 
     if (id.indexOf("hidden")!= -1){ 
return currentCount + "_hidden"; 
}else{ 
     return ++currentCount; 
} 
     }    
    }); 
    }).end().appendTo("#myTable1"); 
} 

} else { 
     } 
     }, 
    error:function (xhr, ajaxOptions, thrownError){ 

    } 
     }); 
      } 
    }); 
     }); 
+0

live()函數已被棄用。您應該使用on()或delegate() – Jlange 2012-08-10 17:36:29

+1

您正在將模糊事件添加到表中。當你離開你的表格上下文時,你想讓這個事件觸發嗎?如果您希望輸入具有自己的模糊功能,則需要綁定到輸入,而不是表格。 – Jlange 2012-08-10 17:38:50

+0

感謝您的回覆。我在表中有多個輸入和選擇元素。我如何對錶格中的每個元素進行模糊調用,以便它應該通過克隆的元素進行傳播? – 2012-08-10 21:02:45

回答

0

如果你想表中的所有元素都具有的聽衆,你首先需要給他們所有的一類,(如「表-elem「),並附加一個這樣的監聽器:

$("#myTable1").on("blur", ".table-elem", function() { 

     //your function you want to run 
    });