2011-11-03 96 views
-1

如何添加keyup事件动态添加textfield.i正在开发中drupal.when我试图用“活”的Web应用程序,菜单的工作不jQuery的.keyup

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

你是什么意思与“不工作”?提问时应添加所有相关信息。 – hugomg

回答

0

要在代码中保存混乱添加一个类到您要动态添加的输入字段,以便它对您来说很容易。反正使用现场将工作。看看这个小提琴

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

+0

@ swordfish ..在我的情况下,“AddRow”按钮点击后,它创建了一个有四个文本框的行。其中“车辆号”textfield是there.For只有特定的textfield我想添加此event.How我可以自定义ur代码根据该.. – user731060

+0

@ user731060:只需在您希望将keyup事件附加到的字段中包含'class =“b”'。 –

+0

@ user731060只给你想要举办活动的领域提供一个课程。 – swordfish

0

@后swordfish..in我的情况‘AddRow’按钮点击,itcreates四textfields.Among一排‘车不’文本框是there.For只有特定textfield我想添加这个event.How我可以自定义乌尔代码据此..

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

相反,随着剑鱼曾建议,添加一个类你希望keyup事件中附加到(使用类的jQuery选择),并删除id属性,只使用name属性而不是域(但不使用jQuery选择器的name属性 - 你不需要它)。

+0

vehicle_no textfield的ID将在每行不同 – user731060

+0

好点。但ID属性不是真的有必要。您可以使用name属性来避免风险。 –

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()); 
}); 

如果其他事情都很好,它应该工作。试一试。

0

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