2010-07-03 35 views
2

儘管實現數據輸入工具,我得到了需要突出的表,其價值由交易被更改的字段。 (不是必需的表中的所有字段改變)JSF - 突出顯示錶(事務內)改變的數據可重用的框架

這方面的一個可重複使用的框架可用於複製類似效用/交易相同的功能,而不是「一次性」溶液的複製成本。如果易於添加到已有的流程中,它可能會更加有用。我期待在JSF 1.1中實現這樣的框架。 雖然很多,這可能涉及改變/改變已經開發的通用組件, 我覺得有可能是一種普遍的做法。

在我的特別cirumstance我有重複使用的表格建設者和導航/交易 框架。

可能的方法:

  1. 純粹的服務器端。將數據存儲器從先前的狀態緩存。循環並做一個比較。以某種方式利用數據字段的綁定返回到組件並觸發其突出顯示? (或者有組件查找基於導航XML的豆類和觸發自己的高亮只是他們的領域。)

  2. 做多客戶端的辦法。編輯組件會知道他們以前的狀態並知道他們輸入的值。比較並觸發突出顯示。不知道這將如何傳遞到下一頁/狀態。

一般想法和部分解決方案。受歡迎的。還有關於如果這在其他框架(Grails?)中可用的信息。 (最簡單的做法是看看它已經完成了!)

感謝您的任何幫助/推測/頭腦風暴!

回答

1

這樣做客戶方是非常容易和用戶友好。

當考慮jQuery JS框架,這是那麼容易,因爲:

$(':input').each(function() { 
    $(this).attr('data-original', $(this).val()).change(function() { 
     $(this).toggleClass('changed', $(this).val() != $(this).attr('data-original')); 
    }); 
}); 
結合

這個CSS例子:

.changed { background: #fee; } 

這裏的工作SSCCE。 Copy'n'paste'n'run它看你自己。

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <title>SO question 3170317</title> 
     <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
     <script> 
      $(document).ready(function(){ 
       $(':input').each(function() { 
        $(this).attr('data-original', $(this).val()).change(function() { 
         $(this).toggleClass('changed', $(this).val() != $(this).attr('data-original')); 
        }); 
       }); 
      }); 
     </script> 
     <style> 
      .changed { background: #fee; } 
     </style> 
    </head> 
    <body> 
     <form> 
      <input value="change"> 
      <input value="those"> 
      <input value="inputs"> 
     </form> 
    </body> 
</html> 

(如果你想讓它偵聽每一個按鍵,而不是變化和模糊,只是keyup代替在第二JS線change一部分,這裏有一個live demo使用keyup