我有几个文本框是根据从其他来源获得的一些结果动态生成的。我想向这些文本框添加一些事件处理程序以捕获任何按键,并确保输入的所有内容都是数字。

我根据JSON响应中数组的长度生成这些文本框,如下所示:

for(i=0;i<data.routesout.length;i++)
{
            content += '<label for="route' + i + '">' + data.routesout[i].name + '(%)</label>';
            content += '<input type="text" name="route' + i + '" id="route' + i + '" value="' + data.routesout[i].percent>';
}


如何将单个事件处理程序附加到所有这些可能的输入上?

最佳答案

您已经用jQuery标记了问题,所以我想知道为什么不使用该库来构建内容:

var content = [];
for (var i = 0; i < data.routesout.length; ++i) {
  content.push($('<label/>', { 'for': 'route' + i, text: data.routesout[i].name }));
  content.push($('<input/>', { change: yourEventHandler, type: 'text', name: 'route' + i, id: 'route' + i, value: date.routesout[i].percent, change: yourEventHandler }));
}


通过这种方式,您可以在构造处理程序元素时将其逐个绑定。 (我以“ change”为例,但是您可以使用相同的方式为所需的任何事件绑定处理程序。)

最后,您可以根据需要附加所有创建的元素,或者可以随时添加它们而不是构建数组。

09-17 19:06