可以使用javascript更改输入标记的名称吗?

时间:2009-08-24 20:28:33

标签: javascript jquery html

我想知道是否可以使用javascript或jquery更改输入标记的名称,例如在此代码中:

<input type="radio" name="some_name" value="">

我想在用户选择此单选按钮时更改some_name值。

我想要这样做的原因在这里描述:How might I calculate the sum of radio button values using jQuery?

6 个答案:

答案 0 :(得分:8)

只需 elem .name = "some other name" elem .setAttribute("name", "some other name") elem 是你要改变的元素。

要在选择时执行此操作,请使用 onchange 事件:

<input type="radio" name="some_name" value="" onchange="if(this.selected) this.name='some other name'">

并将该行为应用于具有该名称的每个单选按钮:

var inputElems = document.getElementsByTagName("input");
for (var i=inputElems.length-1; i>=0; --i) {
    var elem = inputElems[i];
    if ((elem.type || "").toLowerCase() == "radio" && elem.name == "some_name") {
        elem.onchange = function() {
            if (this.selected) {
                this.name = "some other name";
            }
        };
    }
}

但是使用jQuery非常容易。

答案 1 :(得分:4)

jQuery方式

$('input:radio[name="some_name"]').attr('name', 'new name');

Gumbo涵盖了香草JavaScript方式

答案 2 :(得分:2)

是的,您可以使用javascript更改任何元素的名称。请记住,尽管IE 6和7在提交的表单中存在问题,其中输入元素已经在javascript中修改(不确定这个确切的情况是否会受到影响)。

$('input:radio[name="some_name"]').attr('name', 'new_name');

编辑:要仅在选择时进行更改,以下是代码:

$("input:radio[name='some_name']").click(function() {
  if ($(this).attr('checked'))    $("input:radio[name='some_name']").attr('name', 'new_name');
  else                            $("input:radio[name='some_name']").attr('name', 'some_name');
});

答案 3 :(得分:1)

不确定。如果jQuery是你的毒药,这应该可以解决问题:

$("input[name=some_name]").attr("name", "other_name");

答案 4 :(得分:0)

我想出了这个:

<input type="radio" name="some_name" value="" id="radios">

<script type="text/javascript" charset="utf-8">
$(document).ready(function()
{
    $("#radios").click(function()
    {
        $(this).attr("name", "other_name");
    });
});
</script>

答案 5 :(得分:0)

尝试更改单选按钮的name属性将导致IE中出现奇怪的,不良行为。

处理此问题的最佳方法是用新的单选按钮替换旧的单选按钮。 This post可能会对您有所帮助。如果您使用的是jQuery,则可以使用replaceWith函数来完成。

More information about changing name attributes in IE