2011-04-22 51 views
0

如何使用jquery获取动态生成的文本框的id?我需要为相应的文本框触发TextChanged事件。代码后面的文本框没有方法引用。如何在代码隐藏中引用该事件时引用任何方法。有人请帮忙。我不太了解jquery。我使用的整个脚本如下:如何获取动态生成的文本框的ID?

<script type="text/javascript"> 

$(init); 

function init() 
{ 
    $('#test').droppable(// Div Control 
    { 
     drop: handleDropEvent 
    }); 

    $('a').each(function(idx, item) { 
     $(item).draggable({ cursor: 'move', helper: 'clone' }) 
    }); 
} 

$(function() { 
    $("#draggable").draggable(); //Nothing to do with this div 
}); 

function handleDropEvent(event, ui) 
{ 
    var draggable = ui.draggable; 
    document.getElementById('test').innerHTML += addColumn(draggable.attr('text')) + '<br>'; 
} 

function addColumn(column) 
{ 
    var iHtml; 
    // This code will generate a checkbox and a textbox. I need to fire the event of thus generated textboxes. 
    iHtml = '<div id="dv' + column + '" width="100px;" height="20px;" padding: "0.5em;">&nbsp;' + '<span title="ToolTipText">' + '<input type="checkbox" id="cb' + column + '" value="' + column + '" /> <label for="cb' + column + '">' + column + '</label></span><input type="text" runat="server" id="aln' + column + '">&nbsp;</div>'; 

    return iHtml; 
} 
</script> 
+0

什么是你生成动态创建的复选框? – ahsteele 2011-04-22 02:04:29

+0

复选框将保留我拖动文本的标签。 – NewBie 2011-04-22 02:06:59

回答

3

有两种方法:保留生成的元素,或生成新元素时生成ID。

一)保持生成的元素

这就要求你不使用innerHTML,但创建元素(document.createElement,或用jQuery的$),然后就可以直接使用元素(无需再通过ID调用它)。例如,使用jQuery:

var container = $('#container'); 
var myDiv = $('<div id="myDiv"/>'); 
var myCheck = $('<input type="checkbox"/>'); 
myDiv.append(myCheck); 
container.append(myDiv); 

B)生成的ID

container.innerHTML = '<div id="myDiv"><input type="checkbox" id="myCheck"/></div>'; 
// and after this you can get them by ID: 
var myCheck = $('#myCheck'); 
+0

我在拖动文本时得到了[对象对象]的结果。 – NewBie 2011-04-22 02:30:04

+0

如何从复选框集合中选中复选框的标识,如果我这样做? – NewBie 2011-04-22 03:30:42

+0

您可以执行一个循环,并将结果元素推送到数组或对象(字典)中。 – Amadan 2011-04-22 16:05:32

3

我只想补充一类在IHTML文本框,然后使用.live()事件

这个替换您的IHTML

iHtml = '<div id="dv' + column + '" width="100px;" height="20px;" padding: "0.5em;">&nbsp;' + '<span title="ToolTipText">' + '<input type="checkbox" id="cb' + column + '" value="' + column + '" /> <label for="cb' + column + '">' + column + '</label></span><input class="myclass" type="text" runat="server" id="aln' + column + '">&nbsp;</div>'; 

然后添加现场活动

$('.myclass').live('change', function() { 
    alert(' Live handler called.'); 
}); 

这里是一个WORKING DEMO

+0

我如何为div集合声明一个类? – NewBie 2011-04-22 02:17:24

+0

我试图显示一个消息框来检查这个实况事件是否被调用。但它似乎不工作。是否有任何参数要传递给函数()? – NewBie 2011-04-22 02:56:12

+0

@Amadan我错过了键入功能我固定它,并提出了一个小提琴 – mcgrailm 2011-04-22 03:11:41