我有以下函数,它用当前创建的时间戳的ids和names生成带编号的输入字段。我尝试为创建的每个对象附加一个datepicker,因此是唯一的/timestamp id。
有没有人能建议我做这件事的方法?
我相信datepicker函数需要在创建的每个输入字段下生成,但我不知道如何用JavaScript生成JavaScript函数。我在想,也许我可以使用jQuery的load()函数,并调用一个PHP脚本来生成一个唯一的函数并将其加载到一个div中。这是解决这个问题的最好方法吗?谢谢!
<script>
var number = 0;
var num;
$('#add_date').click(function(event) {
number++;
var d=new Date();
var year = d.getFullYear();
var day = d.getDate();
var month = d.getMonth() + 1;
if (month<10){var month = "0"+month;}
if (day<10){var day = "0"+day;}
var fullyear = month+"/"+day+"/"+year;
num = event.timeStamp
$('#box').append( number+". <input type='text' id='" + num + "' name='" + num + "' value='"+ fullyear + "' size='10'/><br><br>");
var idtag = "#"+num;
});
</script>发布于 2011-05-24 03:49:17
为什么不在创建输入时设置datepicker呢?
var picker = $("<input/>", {
type: 'text',
id: num,
name: num,
value: fullyear
}).datepicker();
$('#box').append(number).append(picker);此外,您应该使"id“值看起来像有效的标识符,而不是普通数字。
发布于 2011-05-24 04:07:32
看看@Pointy对实际解决方案的回答,他比我更快,我的回答实际上不会解决你的问题,我只想提几点注意。
试着适当地缩进你的代码,这样在一个月后你就可以很容易地阅读它。您现在可能知道它的确切用途,但从长远来看,弄清楚它将是一件痛苦的事情。
虽然这不太可能,但不能保证同一事件不会在同一毫秒内触发两次,我会避免使用event.timeStamp来生成唯一的ID。虽然这只是个人偏好,但它可能永远不会发生,我只是不喜欢依赖计时器的唯一性。你已经有了递增的number变量,你应该使用它,这绝对是唯一的。
在将HTML写入字符串时,我宁愿使用适当的标准标记。使用'作为字符串边界,使用"作为HTML属性。
最后,在if(month<10){...}条件中,不要重新定义已经在函数中定义的变量。它可能不会抛出错误或有任何负面影响,但我们只能感谢目前宽宏大量的javascript实现,在相同的范围内不应该允许重定义。
最后,确保将所有jQuery初始化代码放入jQuery就绪函数中,以确保DOM和jQuery本身已完全加载。
很抱歉我的粗鲁..。;)
$(function(){
var number = 0;
$('#add_date').click(function(event) {
number++;
var d=new Date();
var year = d.getFullYear();
var day = d.getDate();
var month = d.getMonth() + 1;
if (month<10) month = "0"+month;
if (day<10) day = "0"+day;
var fullyear = month+"/"+day+"/"+year;
// Insert @Pointy's solution in here...
});
});发布于 2011-05-24 03:53:10
您可以添加文件
<input type='text' id='" + num + "' name='" + num + "' value='"+ fullyear + "' size='10' class='fake-class'/>然后,您可以像这样加载datepicker对象:
$('.fake-class').each(function(){
$(this).datepicker();
});希望能有所帮助
https://stackoverflow.com/questions/6102130
复制相似问题