无法绑定事件

时间:2014-08-21 13:19:35

标签: javascript jquery

我正在尝试将onchange事件绑定到textarea,但这不起作用

$('#Que_dlist_ctl0' + sectionid + '_Inner_dlist tr:nth-child(' + (i + 1) + ')  
#Que_dlist_ctl0' + sectionid + '_Inner_dlist_ctl0' + i + '_txtsuggest')
.addClass("clTxt_" + i)
.bind("change",function(){"Validate(this);"});

在渲染的html中,我可以看到根据需要添加的“类”,但不是事件。 还尝试了.attr而不是bind

$('#Que_dlist_ctl0' + sectionid + '_Inner_dlist tr:nth-child(' + (i + 1) + ')  
    #Que_dlist_ctl0' + sectionid + '_Inner_dlist_ctl0' + i + '_txtsuggest')
    .addClass("clTxt_" + i)
    .attr("onchange","Validate(this);"});

它在firefox中没有用,即和chrome。

表和控件中的行都是动态生成的,因此是奇怪的id选择器

<textarea class="clTxt_0" name="Que_dlist$ctl00$Inner_dlist$ctl00$txtsuggest"  
rows="3" cols="20" id="Que_dlist_ctl00_Inner_dlist_ctl00_txtsuggest"  
style="width:300px;"></textarea>

2 个答案:

答案 0 :(得分:1)

使用:

.change(function(){
   Validate(this);
});

答案 1 :(得分:0)

如果你写$(selector).bind("change",function(){}); or $(selector).change(function(){});,那么当事件被绑定到textarea时,这将仅绑定到已存在于DOM中的那些textareas。

由于您的行是动态生成的,因此您只需在生成

时向textarea添加一个类
<textarea class="gridTextArea" class="clTxt_0" 
 name="Que_dlist$ctl00$Inner_dlist$ctl00$txtsuggest" rows="3" cols="20" 
 id="Que_dlist_ctl00_Inner_dlist_ctl00_txtsuggest"  style="width:300px;" >
 </textarea>

并将其绑定如下,它将绑定到动态创建的行中所有新创建的textareas。

$(document).on("change",".gridTextArea",function(){
//your logic goes here
 });

希望这会有所帮助:)