如何在原型中检测当前文本区域之外的单击?

用户2718671

我有一个“转换”为文本区域的div。好吧,这是一个隐藏的文本区域,当有人单击div时会显示出来。div将隐藏,并且textarea将获得div的innerHTML。用户现在可以编辑文本,完成后我希望他们在文本区域之外单击。现在,textarea隐藏,并且div再次显示带有更新的html内容。

但是目前,它无法按预期工作。如何检测用户何时在文本区域之外单击?.not()相当于jQuery的东西吗?用户还应该能够调整文本区域的大小。目前,它在调整大小后关闭。有任何想法吗?

这是一个小提琴:http : //jsfiddle.net/t3qRL/

这是HTML:

<div class="media_box">
    <div class="label"> Textfeld:</div>
    <!-- with the property contentEditable the div would be editable but there would be no linebreaks -->
    <div class="txt_area"> 
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam id nunc quis purus aliquam sollicitudin porta nec dui. Interdum et malesuada fames ac ante ipsum primis in faucibus. Mauris sagittis eleifend dignissim. Curabitur ligula est, rhoncus eget lobortis accumsan, volutpat et lorem. Suspendisse augue mauris, mollis et lectus at, sodales pellentesque metus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In rutrum est vitae justo ullamcorper malesuada.
    </div>
    <textarea class="cright_txtarea" style="display: none">
    </textarea>
</div>

JS:

document.observe('dom:loaded', function () {
    $$('body')[0].on('click', '.txt_area', function (event, element) {
        event.stopPropagation();
        var div_text = element.innerHTML;
        element.hide();
        var text_area = element.next('textarea');
        text_area.show();
        text_area.value = div_text;
        $$('html')[0].on('click', function () {
            element.show();
            element.update(text_area.value);
            text_area.hide();
        });
    });
});
用户2718671

找到了一个解决方案,但我仍然愿意接受更优雅的解决方案;)

这是新的小提琴:http : //jsfiddle.net/t3qRL/2/

更新的javascript:

document.observe('dom:loaded', function () {
    $$('body')[0].on('click', '.txt_area', function (event, element) {
        event.stopPropagation();        
        var div_text = element.innerHTML;
        element.hide();
        var text_area = element.next('textarea');
        text_area.show();
        text_area.value = div_text;
        text_area.onmouseover = function () {
            text_area.observe('click', function(event) {
                Event.stop(event);
            });
        }

        text_area.onmouseout = function () {                
            $$('html')[0].on('click', function () {
                console.log(text_area.value);
                element.show();
                element.update(text_area.value);
                text_area.hide();
            });
        }
    });
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用原型单击事件获取文本区域的文本?

如何在文本区域底部之外分配按钮?

如何在reactjs中“通过单击按钮删除文本区域”

如何自动单击文本区域?

如何在QGridLayout中获取QComboBox的当前文本?

如何在css中获取当前文本大小

如何在鼠标单击文本区域时从文本区域的字符串中选择单词

jQuery如何在鼠标离开控制区域时继续检测文本区域的大小

如何在javascript中获取文本区域的值

如何在标签中显示富文本区域的内容

如何使用原型自动调整文本区域的大小?

Chrome扩展程序替换当前文本区域中的单词

如何在文本区域更改div?

如何在有角的文本区域内添加可单击的按钮

Laravel Blade:如何在单击添加更多时显示文本区域

检测后如何从图像中提取文本区域

如何使用JavaScript从文本区域获得单击的单词

单击提交按钮后如何使文本区域为空?

如何在文本框中的文本区域添加值?

如何在没有文本字段或文本区域的Java中获取keyevent?

如何在文本区域中显示所选选项的文本

如何在文本区域显示特定文本?

如何在yii中的CActiveForm中制作动态文本区域

如何从React中的文本区域获取所选文本?

文本区域变化检测

检测外部点击文本区域

从当前集中的文本区域记录值

如何在Opera中针对文本区域上下文进行搜索和替换?

jQuery:如何在div中从文本区域链接到图像?