jQuery添加表单输入并更改输入名称

时间:2011-05-05 11:42:07

标签: jquery html xhtml

我正在为婚礼摄影师构建订单,因此客人可以从他网站的客户专辑部分订购图片。

客人可以订购1到50张图片,因此我目前正在使用jQuery的clone()功能,效果很好。

但是我还需要更改每个输入的名称attr,每次添加一个,以便表​​单处理可以获取新输入。

name="picture-1"
add field
name="picture-2"

有人知道这是否可行?

我相信每次调用addClass()时我都可以使用clone(),但如何才能使addClass()计数?

谢谢

3 个答案:

答案 0 :(得分:5)

您只需设置克隆元素的name属性即可。 (在jQuery 1.6或更高版本上使用prop;在1.5.2及更低版本上使用attr看起来attr适用于1.5和1.6; {{1} } 适用于1.6及以上版本。)

但是请注意HTML表单的工作方式,有多个字段具有相同的名称,它们都被发送到服务器,您的代码可以处理所有这些(通常是服务器)您正在使用的技术将它们设置为数组或列表。

示例:

HTML:

prop

使用jQuery的JavaScript:

<form id='theForm'>
  <input type='text' name='picture-1'>
  <input type='button' id='btnMore' value='+'>
</form>

Live copy

答案 1 :(得分:1)

$('input[name^="picture-"]',pointertoform).length

...将为您提供名称以“picture-”开头的实际存在输入的数量,您可以使用此数字创建新名称。

但我更喜欢diEcho评论的解决方案。

答案 2 :(得分:0)

试试这个(原始代码)

$(some_cloned_element).each(function(i, elem){
    var newName = "yay_i_love_my_new_name";
    if ($.browser.msie === true){ // evil browser sniffing *cries*
        $(elem).replaceWith(document.createElement(
            this.outerHTML.replace(/name=\w+/ig, 'name='+newName+'_'+i)
        ));
    } else {
        $(elem).attr('name',newName+'_'+i);
    }
    $("body").append(some_cloned_element);
});

检查 i = 50 然后中断/退出

更好的方法:将名称用作name=picture[]

之类的数组

Refernece