Javascript 选择div标记中的文本区域
我觉得我经常来这里问问题,但我又一次被卡住了。我正在尝试选择一个文本区域,并允许自己在另一个文本区域中编辑文本,使用textboxs可以很好地工作,但不能使用textareas。每次单击div容器时,在查找textarea时都会得到一个未定义的结果。下面是代码 jQueryJavascript 选择div标记中的文本区域,javascript,jquery,html,Javascript,Jquery,Html,我觉得我经常来这里问问题,但我又一次被卡住了。我正在尝试选择一个文本区域,并允许自己在另一个文本区域中编辑文本,使用textboxs可以很好地工作,但不能使用textareas。每次单击div容器时,在查找textarea时都会得到一个未定义的结果。下面是代码 jQuery $(".textAreaContainer").live('click','div', function(){ var divID = this.id; if ( divID !==
$(".textAreaContainer").live('click','div', function(){
var divID = this.id;
if ( divID !== "" ){
var lastChar = divID.substr(divID.length - 1);
var t = $('#' + divID ).find(':input');
alert(t.attr('id'));
t = t.clone(false);
t.attr('data-related-field-id', t.attr('id'));
t.attr('id', t.attr('id') + '_Add');
t.attr('data-add-field', 'true');
var text = document.getElementById(divID).innerHTML;
//var textboxId = $('div.textAreaContainer').find('input[type="textArea"]')[lastChar].id;
$('div#placeholder input[type="button"]').hide();
var text = "<p>Please fill out what " + t.attr('id') +" Textarea shall contain</p>";
if ( $('#' + t.attr('id')).length == 0 ) {
$('div#placeholder').html(t);
$('div#placeholder').prepend(text);
}
}
else{
}
});
$(.textAreaContainer”).live('click','div',function(){
var divID=this.id;
如果(divID!==“”){
var lastChar=divID.substr(divID.length-1);
var t=$('#'+divID).find(':input');
警报(t.attr('id'));
t=t.clone(假);
t、 attr('data-related-field-id',t.attr('id');
t、 attr('id',t.attr('id')+'u Add');
t、 attr('data-add-field','true');
var text=document.getElementById(divID).innerHTML;
//var textboxId=$('div.textAreaContainer').find('input[type=“textArea”]'))[lastChar].id;
$('div#占位符输入[type=“button”]”)。hide();
var text=“请填写“+t.attr('id')+”文本区应包含的内容”;
if($('#'+t.attr('id')).length==0){
$('div#placeholder').html(t);
$('div#占位符')。前缀(文本);
}
}
否则{
}
});
t、 attr('id')应该返回textbox1(或类似的),但只返回undefined
我尝试过.find(':textarea')、.find('textarea')、.find(text,textarea)、.find(':input')和其他一些我通过谷歌找到的方法,但它们都返回未定义的,我不知道为什么。可以在此处找到演示。提前感谢大家的帮助,非常感谢
编辑:下面是我正在使用的一个非常类似示例的代码。这就是我想要做的,但是使用textboxs而不是textareas
$('#textAdd').live('click',function() {
var newdiv = document.createElement('div');
newdiv.innerHTML = "Textbox " + textBoxCounter + " <br><div id='container" + counter + "' class='container'><li><input type='text' id='textBox" + textBoxCounter +"' name='textBox" + textBoxCounter + "'></li></div></br>";
document.getElementById("identifier").appendChild(newdiv);
textBoxCounter++
counter++;
});
$(".container").live('click','div', function(){
var divID = this.id;
if ( divID !== "" ){
var lastChar = divID.substr(divID.length - 1);
var t = $('#' + divID).find('input');
alert(divID);
t = t.clone(false);
t.attr('data-related-field-id', t.attr('id'));
alert(t.attr('id'));
t.attr('id', t.attr('id') + '_Add');
t.attr('data-add-field', 'true');
var text = document.getElementById(divID).innerHTML;
// var textboxId = $('div.container').find('input[type="text"]')[lastChar].id;
$('div#placeholder input[type="button"]').hide();
var text = "<p>Please fill out what " + t.attr('id') +" textbox shall contain</p>";
if ( $('#' + t.attr('id')).length == 0 ) {
$('div#placeholder').html(t);
$('div#placeholder').prepend(text);
}
}
else{
}
});
$('#textAdd').live('click',function()){
var newdiv=document.createElement('div');
newdiv.innerHTML=“Textbox”+textBoxCounter+”
”;
document.getElementById(“标识符”).appendChild(newdiv);
文本框计数器++
计数器++;
});
$(“.container”).live('单击','div',函数(){
var divID=this.id;
如果(divID!==“”){
var lastChar=divID.substr(divID.length-1);
var t=$('#'+divID).find('input');
警报(divID);
t=t.clone(假);
t、 attr('data-related-field-id',t.attr('id');
警报(t.attr('id'));
t、 attr('id',t.attr('id')+'u Add');
t、 attr('data-add-field','true');
var text=document.getElementById(divID).innerHTML;
//var textboxId=$('div.container').find('input[type=“text”]'))[lastChar].id;
$('div#占位符输入[type=“button”]”)。hide();
var text=“请填写“+t.attr('id')+”文本框应包含的内容””;
if($('#'+t.attr('id')).length==0){
$('div#placeholder').html(t);
$('div#占位符')。前缀(文本);
}
}
否则{
}
});
首先从第一行删除第二个参数“div”:
$(".textAreaContainer").live('click','div', function(){
…要做到这一点:
$(".textAreaContainer").live('click', function(){
然后改变:
var t = $('#' + divID ).find(':input');
…致:
var t = $(this).find(':input');
因为您已经知道
此
是容器,因此无需再次按id选择它。此外,您分配给textarea容器的id属性中也有空格,这是无效的,并导致您的原始代码尝试选择带有'#textAreaContainer 0'
的元素,该元素实际上查找0
标记,该标记是#textAreaContainer
的后代。因此,修复创建元素以删除id中的空格的代码通常是一个好主意,也是解决此问题的另一种方法。live()的第二个参数应该是一个映射。你提供了一个字符串'div'嗨,斯科特,谢谢你的回复,但是你说的地图是什么意思?抱歉,如果我看起来很慢,但我对jQuery还是比较陌生的,我会用我使用textboxs的工作示例来编辑这篇文章。您好nnnnnn,非常感谢您的回复。它很有魅力!再次感谢你,伙计!很酷,谢谢你提供更多的信息和修复,我会马上开始。谢谢你所做的一切!