2

我有一些这样的 jQuery 代码:

$(function($) {
$('input.autonumeric').autoNumeric({aSep: ',', aDec: '.',vMax:'1000000000000'}); });    

使用该代码,每个具有autonumeric-class 的输入文本只能输入数字。

但是当我从 写输入文本标签时innerHTML,它根本不起作用。这就是我编写代码的方式:

function edit(){
  var current = window.event.srcElement;
  while ( (current = current.parentElement) && current.tagName !="TR");
  var row = current.childNodes;
  td = row.item(0); var temp = td.innerHTML;
  td.innerHTML = "<input type=\"text\" value=\""+temp+"\" class=\"autonumeric\" \>";
}

我该如何解决这个代码?注意:如果我的英语不够好,我很抱歉。

4

4 回答 4

1

您还必须为新添加的元素运行 autoNumeric。您可以在创建新输入时这样做:

$(td).html($("<input type=\"text\" value=\""+temp+"\" class=\"autonumeric\" \>").autoNumeric({'....'}));

或离开您的版本并运行

$('input.autonumeric').autoNumeric({aSep: ',', aDec: '.',vMax:'1000000000000'}); }); 

之后再次。

于 2012-07-04T14:33:11.967 回答
0

既然您已经在使用 jQuery,为什么不使用 jQuery 创建元素呢?

var e = $('<input type="text" />');
e.autoNumeric({aSep: ',', aDec: '.',vMax:'1000000000000'}); });
td.html(e);

当然,您需要调整代码的其他部分以确保 td 是一个 jQuery 对象。

于 2012-07-04T14:30:44.923 回答
0

运行jQuery 插件方法时,它会影响DOM 中当前存在.autoNumeric(...)的所有输入字段。当被调用并创建一个新的时,您必须再次调用。edit()input.autonumeric.autonumeric(...)

于 2012-07-04T14:31:03.007 回答
0

添加 innerHTML 后,您应该再次调用您的 autoNumeric 函数。这是因为页面加载时执行的代码只能“看到”页面加载时 DOM 中存在的元素。添加元素后,您必须将事件附加到它。

于 2012-07-04T14:32:21.227 回答