java - onchange 后 Wicket 数据表更改单元格的字体或 css

标签 java javascript css datatable wicket

在我的应用程序中,我有一个 defaultDataTable,它有一个可点击的列和一个用于过滤表格的搜索字段。过滤器在输入字段中插入字符后过滤数据表的内容。我的目标是在适用于用户输入的字段中的文本部分下划线(或其他 css)。

示例:如果用户输入“ab”,字符串“abc”中的字符“a”和“b”应该带有下划线。使用 Javascript 我可以添加一些样式,但是我的函数对数据表做了一些奇怪的事情。它会删除表格标签内的所有内容,然后将新的 html 放在那里。所有其他信息都消失了。我做错了什么?

<script>
    $('.searchField').keyup(function(){
        var page = $('.datatable');
        alert(page.text());
        var pageText = page.text().replace("<span>","").replace("</span>");
        alert(pageText);
        var searchedText = $('#searchField').val();
        var theRegEx = new RegExp("("+searchedText+")", "igm");    

        var newHtml = pageText.replace(theRegEx ,"<b>$1</b>");
        alert(newHtml);
        page.html(newHtml);
   });
</script>

新表:

<table id="ID" class="datatable" wicket:id="ID">
Col1 Col2 123
<b>MATCHEDCHAR</b>
TEXT
<b>MATCHEDCHAR</b>
TEXT
</table>

旧表(折叠的 body 和头部):

<table id="ID" class="datatable" wicketsource="URL.java" wicket:id="ID">
<thead wicketsource="org.apache.wicket.extensions.markup.html.repeater.data.table:DataTable.java:181" wicket:id="topToolbars">
<tbody wicketsource="org.apache.wicket.extensions.markup.html.repeater.data.table:DataTable.java:207" wicket:id="body">
<tr class="even" wicketsource="org.apache.wicket.extensions.markup.html.repeater.data.table:DefaultDataTable.java:71" wicket:id="rows">
</tbody>
</table>

最佳答案

我认为您在 searchField 上有一个执行表刷新的处理程序。 因此,您只需订阅 complete ajax 事件

Wicket.Event.subscribe('/ajax/call/complete', function(jqEvent, attributes, jqXHR, errorThrown, textStatus) {
  // call code that highlight the text
});

您可以将此订阅方法放在页面中(在script 标记中)。 如果你想将 js 调用链接到特定的行为,比如 OnChangeAjaxBehavior,那么你需要调用 target.appendJavaScript:

    new OnChangeAjaxBehavior(){
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            target.appendJavaScript("<call highlight function here>");
        }
    };

尝试 this jquery 高亮插件。 关于 ajax 全局调用监听器的更多信息 here .

我做了一个简单的 demo所以你可以检查它。

关于java - onchange 后 Wicket 数据表更改单元格的字体或 css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16077499/

相关文章:

java - 进度指示器仍然不确定并且没有下载

java - 使用 Eclipse 的 Android 应用程序

Java JAXB xml pojo 类

javascript - noUiSlider -> 使用值作为表单输入

javascript - 使用 .clone () 和 .animate () 对 .click () 上的元素进行动画处理

java - 如何使用 javaparser 获取类级变量声明?

javascript - 将 css 类添加到 Angularjs 中的标记元素

javascript - 如何在不使浏览器崩溃的情况下使用 IndexedDB 制作一个非常长的字符串?

javascript - 以更高的分辨率使页面布局居中

android - Ink-Mails - 使用 Block-Grid 对邮件客户端没有影响