2013-05-03 10 views
0

我有一些動態生成的rich:calendar和h:selectBooleanCheckbox組件,它們具有動態生成的ID,我需要進行髒檢查。當用戶試圖離開頁面而不保存更改時,彈出框會警告他們。但我只想檢查特定的組件。jQuery在某些事件中捕獲組件ID

我創建了一個jQuery函數:

<script type="text/javascript"> 
function somebodyChangedMe(item) { 
    var id = $(item).attr("id"); 
    alert(id); 
} 
    </script> 

這是我在它最初的拍攝,我只是想捕獲事件,如果我能得到這個工作,我會用它來設置一個變量用於其他功能。

在組件我加:

<h:selectBooleanCheckbox id="upd_ckbx_#{status.index}" 
    onchange="somebodyChangedMe(this);" 
    value="#{_parent.id[status.index].ignore}"> 
    <a4j:support event="onclick"ajaxSingle="true" 
     actionListener="#{someRandomListener}" /> 
</h:selectBooleanCheckbox> 

但是,當我選中該複選框沒有任何反應。我嘗試使用onclick和onkeyup,結果相同。我可以這樣做嗎?我究竟做錯了什麼? 我使用Seam 2.2 JSF 1.2和RichFaces 3.3.3

+0

試試這個:'函數somebodyChangedMe(項目){ 警報(item.id); }'。獲取任何警報? – 2013-05-03 18:39:38

+0

,它給了我一個帶有「undefined」作爲文本的彈出窗口。從頭開始,這確實給了身份證。 – gebuh 2013-05-03 19:06:31

回答

0

JSF給我帶來了一些問題。當我得到的ID我的功能將無法正常工作。這是因爲這種形式,我需要將它包含在元素名稱中,JS不會爲你做。我需要做3件事情:

  • 變化的編輯部件
  • 使另一個組件的背景色(保存按鈕)
  • 在頁面上設置一個參數趕未保存的更改(dataChanged)

所以我結束了以下內容:

function dirtyEnableUpdate(itemChanged,elem) { 
    dataChanged = 1; 
    jQuery(itemChanged).parent().addClass("redBackground"); 
    if (typeof elem === "string") { 
     console.log("i'm setting value here to " + elem); 
     document.getElementById(elem).disabled=false; 
    } 
} 

在我編輯的組件:

​​

是必須要啓用的組件: