3

寻找类似的东西:

$("input:radio:checked").previous("name", "original_name").attr("name","new_name");

我在这里尝试了一些不同的方法,但大部分都得到了错误:Object Expected

任何帮助表示赞赏。

4

3 回答 3

7

正如 Ben S 在对您最初问题的评论中所写,为什么需要更改名称?

假设你有

<input type="radio" name="myRadio" id="radioChoice1" value="radioChoice1Value" />
<input type="radio" name="myRadio" id="radioChoice2" value="radioChoice2Value" />

如果用户选择'radioChoice1'并点击提交,浏览器将发送

myRadio=radioChoice1Value到您的 CGI 脚本。您可以根据需要进行处理。

如果您坚持更改名称属性,我不确定您的代码中的“先前”方法是什么。

你能试一下吗,

$("input:radio:checked").attr("name","new_name");

看看它是否有效?

我可以想象,如果您尝试更改名称属性,可能会出现跨浏览器问题。您可以创建隐藏输入并存储用户选择的单选按钮的名称。

<input type="hidden" id="selectedRadioButton" />

$('#selectedRadioButton').val($("input:radio:checked").attr('name'));

编辑:

请发布您的 HTML,以便我可以告诉您将向 CGI 发布什么样的值。

例如,如果您有

<input type="radio" name="transactionType" id="buy" value="buy" />
<input type="radio" name="transactionType" id="sell" value="sell" />

如果用户单击第一个单选按钮“购买”,那么在您的 CGI 脚本中,“transactionType”的值将是“购买”。

于 2009-07-13T19:42:18.093 回答
3

这是一个执行请求的工作的 jQuery 脚本。我正在使用它来重命名表单上的所有 input=text 字段。虽然我没有对收音机或复选框做任何事情,但我添加了相关的案例陈述。根据需要插入您的单选/复选框转换。

    function renameTextInputFields(ele) {
        var i = 0;
        $(ele).find(':input').each(function() {
            switch(this.type) {
                case 'text':
                    $(this).attr("name","textFieldNumber"+(++i));
                    break;
                case 'checkbox':
                case 'radio':
            });
    }

在 DOM 元素上调用此方法。我自己,我正在一个表单中克隆一个 div。div 有很多文本字段。我得到了这样的基本元素。

var clone = $('.classAssignedToMyDiv').clone(); 

它在 IE 8.x 和 Firefox 3.x 中运行良好

于 2011-01-31T08:12:46.010 回答
2

我同意其他人的观点,即有比重命名输入更好的解决方案。

话虽如此,并回答您最初的问题 - 我建议您为无线电输入分配 ID,然后使用以下代码:

$("#inputId").attr("name","new_name");

我不明白您对.previous()的使用- 我在 jQuery 文档中找不到它。

于 2009-07-13T22:37:25.370 回答