【发布时间】:2019-12-24 09:24:20
【问题描述】:
我正在尝试创建一个添加更多按钮,它将创建一个新的输入字段。但是,我想为它设置一个唯一的名称。
我试图寻找答案,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 在服务器端 - 所以它在服务器上运行一次...... javascript 有
Math.random() -
所以我会像
var x = Math.random();一样使用它? -
当然,如果可行的话。 x 将是 0...1 之间的十进制数 - 当然,不能保证唯一性 - 但是,考虑到 16 位数字,可能性很小
标签: javascript php jquery