Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Фокус для дива (https://javascript.ru/forum/misc/29150-fokus-dlya-diva.html)

GrizzlyBear 17.06.2012 16:24

Фокус для дива
 
Какими способами можно для <div> сделать фокус onfocus

bot87 17.06.2012 16:31

а разве для div можно применить Onfocus?:-?.Может вам подойдет вариант сделать тег div через <a> отменив переход по ссылке

GrizzlyBear 17.06.2012 16:53

Цитата:

а разве для div можно применить Onfocus?.
В том то и дело что див этот параметр не поддерживает:
Но в учебнике сказано что какие то способы есть

http://learn.javascript.ru/focus-blur

Deff 17.06.2012 16:58

GrizzlyBear,
Идея bot87, вполне работоспособна
<a id="Adiv" style="display:block">Тут что то</a>

GrizzlyBear 17.06.2012 17:01

Это понятно что работоспособна
но меня интересуют способы решения с дивом
пара примеров просто интересно

Deff 17.06.2012 17:04

GrizzlyBear,
Тогда поясняйте в чем "фокус"
Для чего он необходим и что есть желания добиться данным событием ?
Можно div обернуть в <a оно полностью прилегает по контуру - короче - поясняйте

GrizzlyBear 17.06.2012 17:20

Конкретно пока что ничего нету.
Есть желание узнать каким образом фокус применяется к див
можете свои примеры выкладывать

Deff 17.06.2012 17:34

GrizzlyBear,
Чуть подумав, скорее всего нун <а вставить внутрь div и растянуть по стенкам... Но без конкретной задачи - выкладывать новые варианты, как не Aйс - Эт в курилки типо: - как измерить периметр зубов у медведя

GrizzlyBear 17.06.2012 17:41

Хорошо конкретная задача.
Например как с формами, при нажатии текст в форме пропадает
делается это с помощью фокуса.
также с дивом к примеру в нем текст. при нажатии на див текст пропадает, а если нажать в другое место то текст возвращается.

codingfighter 17.06.2012 17:44

ну так загоните текущий текст в переменную при нажатии и сделайте innerhtml на пустую строку, ну и т.д.

Deff 17.06.2012 17:45

GrizzlyBear,
А чем плох - onclick для приведенной задачи ?

Собственно нун плясать от отличий фокуса и клика: - фокус вставляет каретку курсора в элемент

GrizzlyBear 17.06.2012 17:50

Я просто как пример привел
Понятно что решений этой задачи много и без фокуса
но я то хочу конкретно с фокусом увидить

Deff 17.06.2012 17:54

<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>

<div id=a style="border:blue 1px solid;">также с дивом к примеру в нем текст. при нажатии на див текст пропадает</div>
<br/>
<div id=b style="border:red 1px solid;"> а если нажать в другое место то текст возвращается.</div>


<script type="text/javascript">
$("#a,#b").click(function(){
  if($(this).attr('id')=='a'){$("#a").hide();
  } else $("#a").show();
});
</script>


<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>

<div id=a style="border:blue 1px solid;height:23px;">также с дивом к примеру в нем текст. при нажатии на див текст пропадает</div>
<br/>
<div id=b style="border:red 1px solid;height:23px;"> а если нажать в другое место то текст возвращается.</div>


<script type="text/javascript">
$("#a,#b").click(function(){
  if($(this).attr('id')=='a'){ $("#a").attr("alt", $("#a").text() ); $("#a").text('')
  } else $("#a").text( $("#a").attr("alt") );
});
</script>

Octane 17.06.2012 18:08

Лень читать все, просто напишу: в HTML5 <a> относится к flow content, поэтому можно спокойно завернуть блок в ссылку.

Джэксон 17.06.2012 21:59

onfocus тот же самый onclick! И работать на див они будут одинаково!!!

Dim@ 17.06.2012 23:22

Все можно :lol: :lol:
<html>
<head>
<meta charset='utf-8'>
<title></title>
</head>
<style>
</style>
<body>
<div style='width:100%;height:100%' id='div2' onclick='O(-2,"l")'></div>
<div id='div' style='position:absolute;top:0px;left:0px;width:300px;height:200px;background-color:f00;' onclick='O(2)' onmouseout='O(-1,false)' onmouseover='O(1,true)'>
<b id='b'>Блаблаблаблаблабла текст</b>
</div>
<script type='text/javascript'>
document.k = 0;
document.t = false;
document.l;
var div = document.getElementById('div');
var b = document.getElementById('b');
document.inka = b.innerHTML;
function O(arg,arg2){ 
 if(arg2 == 'l'){
  if(document.k != 2){
   document.k += 2;
  }
 } 
 document.k += arg;
 if(document.k > 3) document.k = 3;
 if(document.k < -3) document.k = -3;
 if((arg2 != null) && (arg2 != undefined)) document.t = arg2;
 if(document.t == true){div.setAttribute('onmouseout','O(-1,false)');div.setAttribute('onmouseover','')}
 else{div.setAttribute('onmouseover','O(1,true)');div.setAttribute('onmouseout','')}
 if(document.k > 0){
  document.getElementById('b').style.opacity = 0;
  document.getElementById('div').style.border = 'solid blue 3px';
 }
 else{
  document.getElementById('b').style.opacity = 1;
  document.getElementById('div').style.border = 'solid red 3px';
 }
}
</script>
</body>
</html>
нажатие на див будто вызывает фокус и он остается (как у формы), ну и при наводке тоже фокус образуется и исчезает при отводе =)=)

P.S. в коде ошибка скоро найду её.
P.P.S ошибка исправлена.

Deff 18.06.2012 03:09

<style>
#a,#b{
 margin:3px 0;
 padding: 2px 12px;
 width:530px;
 float:left;
}
</style>
<span>
<div id=a style="border:blue 1px solid;" onclick="this.style.color='transparent'" >Кликаем - Текст исчезнет</div>
<br/>
<div id=b style="border:red 1px solid;" onclick="this.parentNode.childNodes[1].style.color=''"> Кликаем тут, в Первом окне - появится</div>
</span>

Dim@ 18.06.2012 08:41

все я ошибку исправил в своем примере

Deff 18.06.2012 12:56

Dim@,
Можно существенно сократить:yes:
скрытие через onmouseout легко реализовать через css

Dim@ 18.06.2012 12:59

Deff,
да пофиг не так уж много и памяти жрет мой пример :) , зато у меня как с реальным фокусом ;)

Dim@ 18.06.2012 13:00

Deff,
я не так хорошо знаю css прямо так не изучал

observer 18.06.2012 13:13

Цитата:

Сообщение от GrizzlyBear (Сообщение 182054)
Какими способами можно для <div> сделать фокус onfocus

А как вы понимаете "сделать фокус"? Focus/blur изначально используется для элементов форм. Ссылки тоже подпадают сюда, т. к. расширяют сей список (навигация через Tab, например).

Задача-то какая?

devote 18.06.2012 13:16

Вы как дети все
<style>
    div {
        width: 100px;
        height: 100px;
        border: 1px solid #000;
    }
    div:focus {
        border: 1px solid #f00;
        content: "На мне фокус";
    }
</style>
<div contenteditable="true" onfocus="this.removeAttribute('contenteditable');" onblur="this.setAttribute('contenteditable', true);"></div>

в опере и так работает:
<style>
    div {
        width: 100px;
        height: 100px;
        border: 1px solid #000;
    }
    div:focus {
        border: 1px solid #f00;
        content: "На мне фокус";
    }
</style>
<div disabled="disabled" contenteditable="true"></div>

Deff 18.06.2012 13:48

devote :cray: Опередил - изумительно! ++ ( Имхо следущая серия - челу как в input type='text' писать захочется

devote 18.06.2012 13:53

Цитата:

Сообщение от Deff
Имхо следущая серия - челу как в input type='text' писать захочется

Ну хз.. в опере все гуд работает, она нормально и фокус ставит клавишей Tab и disabled свое дело делает, то-есть не дает вводить дынные. и т.д. ну а если другие браузеры тупят ( не знаю не проверял.. может и не тупят ) то это их проблемы :D

devote 18.06.2012 14:18

Deff,
да в хроме я заметил он курсор ставит для редактирования.. поэтому я поправил пример выше.

Deff 18.06.2012 14:28

Восхищаюсь! - сижу -балдю!

devote 18.06.2012 14:32

мда, чето ИЕ не воспринимает ничего совсем.. даже с тегом A

dmitriymar 18.06.2012 14:42

лень читать ,что мешает при клике вешать своё событие и отрабатывать его. другой вопрос нахрена?
-если клик на dive и он раедактируемый-отработать событие пользовательское фокус. если клик не на диве посмотреть был ли он в пользовательском фокусе-отработать потерю фокуса если необходимо.(чем текст эрия не устраивает? тем более вместе с css3 -это бомба)
а вообще это дрочь и идёт не понимания и не знания HTML. туть джиквери юи никто не отменял

devote 18.06.2012 14:48

Цитата:

Сообщение от dmitriymar
а вообще это дрочь и идёт не понимания и не знания HTML. туть джиквери юи никто не отменял

тут больше не не понимание HTML а чисто ради интереса выяснить... теперь я знаю точно, что с фокусами опера работает лучше всех. Тоесть для нее любой элемент это просто элемент который может иметь все теже события что и всякие там инпуты и т.д. хром вообще свойство disabled не понимает если в диваке сделать contenteditable ИЕ не отрабатывает события focus|blur на элементах с contenteditable, вообщем полная каша.. Лишь опера себя хорошо показала в этом вопросе.
Цитата:

Сообщение от dmitriymar
тем более вместе с css3 -это бомба)

ну никто не сомневается.. но хочется решения простого да и что бы работало там где нет CSS3

dmitriymar 18.06.2012 19:20

Цитата:

Сообщение от devote
тут больше не не понимание HTML а чисто ради интереса выяснить... теперь я знаю точно, что с фокусами опера работает лучше всех.

а некоторые виды рыб клют на некоторых водоёмах лучше в дождь. помогло?
есть спецификации. их -читать!!

devote 18.06.2012 19:27

Цитата:

Сообщение от dmitriymar
есть спецификации. их -читать!!

ты опять ничего не понял.. не нужно тыкать меня в спецификации, я их уже все перекурил.. и там много чего написано и много чего не написано. И почти все браузеры всегда все делают порой иначе.. конечно я могу прочесть в спецификации что мол это можно и это можно.. Но в реале в браузерах это может оказаться нельзя... Поэтому спецификация лишь говорит что должно быть, а не то что есть в тех или иных браузерах.

Deff 18.06.2012 19:29

Да лано Вам - Ну интересно жа - Ну кто нидь крутил кубик-рубика ?

Так вот выкинуть и забыть! Читать Мат статистику и Теорию Перестановок!

devote 18.06.2012 19:34

Цитата:

Сообщение от Deff
Так вот выкинуть и забыть! Читать Мат статистику и Теорию Перестановок!

тоже верно. прочел алгоритм и все проблемы, но крутить без чтения куда интересней :)

dmitriymar 18.06.2012 20:15

devote,
дак я не тебе, а т.с( у).
Вроде бы прямо написал,что нех от незнания головоломки другим загадывать.

Один дурак,может задать столько вопросов ,что сотня мудрецов не сможет ответить.
В.И. Ульянов-Ленин

devote 18.06.2012 20:52

Цитата:

Сообщение от dmitriymar
Вроде бы прямо написал,что нех от незнания головоломки другим загадывать.

ну мыж не против :D


Часовой пояс GMT +3, время: 04:02.