我想知道是否可以使用JavaScript或jQuery更改输入标签的名称,例如在以下代码中:
<input type="radio" name="some_name" value="">
当用户选择这个单选按钮时,我想要改变some_name的值。
我之所以想要这样做,是因为在这里描述了原因:如何使用jQuery计算单选按钮值的总和?
<input type="radio" name="some_name" value="">
当用户选择这个单选按钮时,我想要改变some_name的值。
我之所以想要这样做,是因为在这里描述了原因:如何使用jQuery计算单选按钮值的总和?
只需使用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";
}
};
}
}
for (var i=inputElems.length-1; i>=0; --i) {
- Jason Jong是的,您可以使用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');
});
当然可以。如果你喜欢使用jQuery,那么这个应该能解决问题:
$("input[name=some_name]").attr("name", "other_name");
<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>
试图更改单选按钮的名称属性会导致IE中出现奇怪且不良的行为。
处理此问题的最佳方法是用新单选按钮替换旧单选按钮。此帖子可能会对您有所帮助。如果您正在使用jQuery,则可以使用replaceWith函数来完成。