0

我在表格格式的页面上有数百个 HTML 输入和选择字段,所有字段都具有唯一的 ID。ID 都遵循一个基本结构,我想听听 3 个特定的 ID 结构以进行更改。ID结构描述如下:

xx-rownumber-jobnumber

xx 只是描述列的 2 位字母组合,rownumber 是该字段所在的表的行号,jobnumber 只是正在投标的工作的工作编号(对于 a 上的每个项目都相同)单表)。

我需要听所有遵循结构的 ID:

js-rownumber-jobnumber
wi-rownumber-jobnumber
qt-rownumber-jobnumber

如何做到这一点?

不确定这是否有帮助,但在任何时候我都会知道屏幕上的最大行数,但这个数字是可变的(总体最大为 300)。

额外的信息 -

我在这里遇到的一般问题是我有一张桌子用来投标工作。每一行都是针对出价的一个行项目,并且各个列包含有关该行项目的信息。出价一旦创建,就必须最终确定。一旦完成,任何更改都需要记录下来,以通知某人这些更改需要由客户端运行。

4

4 回答 4

2

您可以使用 jQuery 侦听更改事件,然后在更改事件发生后使用正则表达式解析 ID。

Xenph Yan 的帖子似乎与您要完成的工作非常相关:jQuery 选择器正则表达式。具体来说,jQuery 的正则表达式选择器插件:http: //james.padolsey.com/javascript/regex-selector-for-jquery/

于 2013-08-08T21:23:19.637 回答
1

您可以将其委托给父级

var table = document.getElementById('parentTable');
table.addEventListener('change', function(ev) {
    var target = ev.target;
    // where the regex below matches the pattern
    if ( target.id.match(/(.*?)-(\d+)-(\d+)/) ) {
        console.log(target);
    }
});

请注意,change事件在 IE < 9 中不会冒泡。您可能可以使用onpropertychange这些,但我不确定。使用 jQuery 还允许更改事件在以前版本的 IE 中冒泡。

于 2013-08-08T21:22:23.550 回答
1

如果可以选择更改现有表的设计,那么我认为最好为每个元素(输入)分配多个类而不是 ID:

例如,

将类row - i分配给属于第 i 行的所有元素
job - j分配给属于作业j
的所有元素 将类attr - c分配给属于列c的所有元素

现在您可以通过指定任何一个来查找任何输入元素row, job & attr

input.attr-js在这种特定情况下,您可以在input.attr-wi或上监听各种事件input.attr-qt。我认为这种方法应该可以为您节省大量使用正则表达式的开销,并在您的输入字段中为您提供基于标签的搜索。

于 2013-08-08T22:28:02.820 回答
1

$("[id^=js]")使用 jQuery,您可以尝试查找 id 以 js 、 wi$("[id^=wi]")和 qt开头的元素$("[id^=qt]")

您可以通过多种方式在选择器中使用通配符。这是有关该主题的 jquery 文档

于 2013-08-08T21:29:12.900 回答