gpt4 book ai didi

javascript - 添加更多输入的唯一名称

转载 作者:可可西里 更新时间:2023-10-31 23:00:34 25 4
gpt4 key购买 nike

我正在尝试创建一个添加更多按钮,它将创建一个新的输入字段。但是,我想为它设置一个唯一的名称。

我试图搜索答案,but this does not answer my question .

所以,基本上我尝试使我的名称字段独一无二的是使用 php 方法 rand()。这个概念是 - 当点击添加更多按钮时,它将有一个名称附加到 rand() 给我的数字。

但是,实际情况是它采用 rand() 生成的值并将其应用于生成的所有输入的所有名称。

这是我的代码和我尝试过的:

HTML:

<div class="field_wrapper">
<div>
<input type="text" name="field_name[<?php echo rand(); ?>]" value=""/>
<a href="javascript:void(0);" class="add_button" title="Add field">Add More</a>
</div>
</div>

JQUERY/JAVASCRIPT:

<script type="text/javascript">
$(document).ready(function(){
var maxField = 100; //Input fields increment limitation
var addButton = $('.add_button'); //Add button selector
var wrapper = $('.field_wrapper'); //Input field wrapper
var fieldHTML = '<div><input type="text" name="field_name[<?php echo rand(); ?>]" value=""/><a href="javascript:void(0);" class="remove_button">Remove</a></div>'; //New input field html
var x = 1; //Initial field counter is 1

//Once add button is clicked
$(addButton).click(function(){
//Check maximum number of input fields
if(x < maxField){
x++; //Increment field counter
$(wrapper).append(fieldHTML); //Add field html
}
});

//Once remove button is clicked
$(wrapper).on('click', '.remove_button', function(e){
e.preventDefault();
$(this).parent('div').remove(); //Remove field html
x--; //Decrement field counter
});
});
</script>

如您所见,第一个字段按预期生成了数字。如果您单击“添加更多”,第二个字段会创建一个唯一编号。但是,如果您再次单击添加更多,第三个字段将复制与第二个字段相同的名称。

我如何着手实现我想要的以及为什么 rand() 不生成新代码?

此外,rand() 是否向我保证它将是一个唯一 ID,或者它是否有机会重复相同的数字?

如果确实重复出现,那么最好的方法是什么才能使其尽可能独特?

最佳答案

如果您使用 PHP 生成随机名称,它会在服务器上完成一次。然后您的 JS 代码复制相同的元素。你需要的是用js生成唯一的名字。

如果可以的话,尽量避免随机,理论上,你可以命中相同的数字并遇到神秘的错误。

var generateField = function(name)
{
return '<div><input type="text" name="'+name+'" value=""/><a href="javascript:void(0);" class="remove_button">Remove</a></div>'; //New input field html
}

//Once add button is clicked
$(addButton).click(function(){
//Check maximum number of input fields
if(x < maxField){
x++; //Increment field counter
$(wrapper).append(generateField('field_name['+x+']' ) ); //Add field html
}
});

关于javascript - 添加更多输入的唯一名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57551971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com