【问题标题】:jQuery, dynamic name change of radio buttonjQuery,单选按钮的动态名称更改
【发布时间】:2010-11-10 10:18:07
【问题描述】:

寻找类似的东西:

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

我尝试了一些不同的在这里看到的,但大多数都得到错误:Object Expected

感谢任何帮助。

【问题讨论】:

  • 介意我为什么要动态更改单选按钮的名称吗?
  • 我有两个不同的操作可用于 1 个选定的输入。
  • 我看不到这需要重命名单选按钮。
  • 输入被发送到 cgi。我需要区分使用不同提交选择的单选按钮的名称,对于不同的功能,不希望 UI 上有更多单选按钮。
  • 你为什么不检查一下cgi中的单选按钮是否被选中?如果被选中,那么它的名字就会改变,你处于相同的状态。另外,如果您的用户不使用 javascript 怎么办?然后你的分页符。

标签: javascript jquery html dom radio-button


【解决方案1】:

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

假设你有

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

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

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

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

你可以试试,

$("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”的值将是“购买”。

【讨论】:

  • $("input:radio:checked").attr("name","new_name");对象错误
  • cgi 如何知道使用 myRadio=radioChoice1Value 执行买入或卖出函数?有什么区别?
  • 这只是一个例子。发布您的 HTML,以便我们进行更多讨论。另外,我用另一个例子更新了我的答案。
【解决方案2】:

这是一个执行请求工作的 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 中运行良好

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      相关资源
      最近更新 更多