动态添加文本字段上的Jquery .keyup

时间:2011-11-03 04:13:21

标签: php javascript jquery drupal

如何为动态添加的textfield.i正在开发drupal中的web应用程序添加keyup事件。当我尝试使用" live",菜单不能正常工作

$('input[id$="-code"], input[id$="-case"], input[id$="-vehicle-no"]')
.live('keyup', function(e){
   $(this).val($(this).val().toUpperCase());
});

4 个答案:

答案 0 :(得分:0)

要在代码中保存混乱,请在动态添加的输入字段中添加一个类,以便您轻松使用。无论如何使用live会起作用。看看这个小提琴

http://jsfiddle.net/QugQw/1/

答案 1 :(得分:0)

@ swordfish ..在我的情况下,点击”AddRow“按钮后,它会创建一个包含四个文本字段的行。其中”车辆没有“文本字段就在那里。对于那个特定的文本字段,我想添加此事件。如何根据...

自定义您的代码

听起来您正在创建包含要将keyup事件附加到的字段的新行。如果是这样,那么您可能在同一页面上具有多个具有相同ID的元素。一个很大的禁忌。

相反,正如箭鱼所建议的那样,将一个类添加到您希望将keyup事件附加到的字段(在jQuery选择器中使用该类),并删除id属性,仅使用改为使用name属性(但不使用jQuery选择器的name属性 - 你不需要它)。

答案 2 :(得分:0)

你也可以用另一种方式来做。虽然它会违反“不要重复自己”。请参阅jquery常见问题解答problem with dynamically created elements中的本节。而不是使用live,只需在选择器中使用.keyup()。您在动态创建元素的代码下面再次声明这些绑定。在$(document).ready()方法中的代码中的某处使用以下内容。

$('input[id$="-code"], input[id$="-case"], input[id$="-vehicle-no"]')
.keyup(function(e){
$(this).val($(this).val().toUpperCase());
});

在动态创建这些元素的代码下面放置如下。

$('input[id$="-code"], input[id$="-case"], input[id$="-vehicle-no"]')
.unbind('keyup').keyup(function(e){
$(this).val($(this).val().toUpperCase());
});

如果其他事情没事,它应该有效。试一试。

答案 3 :(得分:0)

对于JQuery上的新元素,您使用实时函数。但是如果你使用Drupal,你必须使用行为。 我真的不明白你的问题,但我读到你尝试使用直播,所以我认为这可以帮助http://drupal.org/node/756722#behaviors