Как сделать перемещение div мышкой с полем textarea, но так, чтобы можно было редактировать текст в textarea?

программирование Linux windows html JavaScript

Как сделать перемещение div мышкой (js) с полем textarea, но так, чтобы можно было редактировать текст в textarea?

<script>
function $(v) {
return(document.getElementById(v));
}
function agent(v) {
return(Math.max(navigator.userAgent.toLowerCase().indexOf(v),0));
}
function xy(e,v) {
return(v?(agent('msie')?event.clientY
+document.body.scrollTop:e.pageY):(agent('msie')?event.clientX
+document.body.scrollTop:e.pageX));
}
function dragOBJ(d,e) {
function drag(e) {
if(!stop){
d.style.top=(tX=xy(e,1)+oY-eY+'px');
d.style.left=(tY=xy(e)+oX-eX+'px');
}
}
var oX=parseInt(d.style.left),oY=parseInt(d.style.top),eX=xy(e),eY=xy(e,1),tX,tY,stop;
document.onmousemove=drag;
document.onmouseup=function(){
stop=1;
document.onmousemove='';
document.onmouseup='';
};
}
</script>


<div style="position: relative; top: 0; left: 0;" onmousedown="dragOBJ(this,event); return false;">
<textarea>bla-bla</textarea>
</div>

В div'е много элементов и нужно сделать так, чтобы их все можно было перемещать мышкой в произвольное место, но при этом нужно, чтобы поле ввода принимало фокус (и перемещалось с другими элементами). Вообще, возможно ли такое?

Примечание:
Как минимум нужно сохранить возможность выделять текст в textarea.

Примечание:
Спасибо за помощь, всё работает так как задумано.

> Судя по коду выше (не вижу других элементов)
Прошу прощения если будет как-то грубовато, но какой смысл показывать код, который к делу не относится? Тем более я js плохо понимаю и мой говнокод мало кому будет интересен. Да и просто даже стыдно показывать, что там наворотил :).
Ответы:
Возможно.
1. Чтобы поле не хваталось мышкой, надо проверять чтобы event.target был не равен этому полю (или ничему другому кроме дива в случае "много перемещаемых элементов на диве")
Судя по коду выше (не вижу других элементов):
   if(e.target!=d) return;
2. Чтобы в поле выделялся текст ненадо возвращать false все время:
    onmousedown="return window.dragOBJ(this,event);"
3. Чтобы не терялся фокус:
    e.preventDefault();


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.