Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择div标记中的文本区域_Javascript_Jquery_Html - Fatal编程技术网

Javascript 选择div标记中的文本区域

Javascript 选择div标记中的文本区域,javascript,jquery,html,Javascript,Jquery,Html,我觉得我经常来这里问问题,但我又一次被卡住了。我正在尝试选择一个文本区域,并允许自己在另一个文本区域中编辑文本,使用textboxs可以很好地工作,但不能使用textareas。每次单击div容器时,在查找textarea时都会得到一个未定义的结果。下面是代码 jQuery $(".textAreaContainer").live('click','div', function(){ var divID = this.id; if ( divID !==

我觉得我经常来这里问问题,但我又一次被卡住了。我正在尝试选择一个文本区域,并允许自己在另一个文本区域中编辑文本,使用textboxs可以很好地工作,但不能使用textareas。每次单击div容器时,在查找textarea时都会得到一个未定义的结果。下面是代码

jQuery

     $(".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,非常感谢您的回复。它很有魅力!再次感谢你,伙计!很酷,谢谢你提供更多的信息和修复,我会马上开始。谢谢你所做的一切!