3

我的页面上有一些select元素,我想删除名称的一部分。

他们的名字看起来像这样:

ctl02$fieldname

我要删除的部分是:ctl02$。所以它只剩下我了fieldname

我要删除的那部分总是以一个以 .ctl结尾的两位数开头$

我用下面的代码试过了,但没有奏效:

$(".elements select").each(function() {
    this.setAttribute("name", this.getAttribute("name").replace(/ctl([0-9]+)\$$/, ""));
});

有人知道我该怎么做吗?

这是一个演示:http ://tinkerbin.com/Klvx5qQF

4

3 回答 3

4

只是正则表达式中的一个错误。我不知道您为什么将 , 正则表达式末尾的 a 加倍$具有$特定含义,这不是您想要的。

这是固定版本:

$(".elements select").each(function() {
    this.setAttribute("name", this.getAttribute("name").
       replace(/ctl[0-9]+\$/, ""));
});

你不需要捕获任何东西,这就是为什么我也删除了括号。

如果您想确保仅在名称开头删除 ctl 事物,则可以将正则表达式更改为/^ctl[0-9]+\$/.

于 2013-01-30T09:55:32.613 回答
4

我想这里不需要正则表达式:

$(".elements select").attr("name", function(i, attr) {
    return attr.substring(attr.indexOf("$") + 1);
});
于 2013-01-30T09:58:54.833 回答
0

用这个 :

$(function() {
    $("select").each(function() {
        var name = $(this).attr("name");

        $(this).attr("name", name.replace(/(ctl[0-9]+)/g, ""));

    });
});

见演示:链接

于 2013-01-30T10:07:03.787 回答