我正在为婚礼摄影师构建订单,因此客人可以从他网站的客户专辑部分订购图片。
客人可以订购1到50张图片,因此我目前正在使用jQuery的clone()
功能,效果很好。
但是我还需要更改每个输入的名称attr,每次添加一个,以便表单处理可以获取新输入。
name="picture-1"
add field
name="picture-2"
有人知道这是否可行?
我相信每次调用addClass()
时我都可以使用clone()
,但如何才能使addClass()
计数?
谢谢
答案 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>
答案 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[]