在实现数据输入实用程序时,我需要突出显示表中其值已被该事务更改的字段。 (并非表格中的所有字段都需要更改)
一个可重复使用的框架可以为类似的实用程序/事务复制相同的功能,而无需“一次性”解决方案的复制成本。如果易于添加到现有流程中,它可能会更有用。我希望在 JSF 1.1 中实现这样的框架。 虽然其中大部分可能涉及更改/更改已经开发的通用组件, 我觉得可能有一个通用的方法。
在我的特定情况下,我有可重用的表格构建器和导航/事务 框架。
可能的方法:
纯服务器端。缓存先前状态的数据bean。循环并进行比较。以某种方式利用数据字段的绑定(bind)返回到组件并触发它们的突出显示? (或者让组件根据导航 xml 查找 bean,并针对它们的字段触发它们自己的突出显示。)
做更多的客户端方法。编辑组件会知道它们的先前状态并知道它们的输入值。比较并触发突出显示。不确定这将如何传递到下一个页面/状态。
一般想法和部分解决方案。受欢迎的。还有关于这是否在其他框架(Grails?)中可用的任何信息。 (做某事最简单的方法是看看它是如何完成的!)
感谢任何帮助/推测/良好的头脑 Storm !
最佳答案
做这个客户端更容易,对用户更友好。
考虑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 .复制'n'粘贴'然后运行它以自己查看。
<!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>
(如果你想让它监听每个按键而不是变化和模糊,只需将第 2 JS 行中的 change
部分替换为 keyup
,这里是live demo 使用 keyup
)
关于java - JSF - 突出显示表中更改的数据(在事务内)可重用框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3170317/