ExBB Community » » JavaScript » Вопросы по JavaScript

Страниц (7): « 1 2 3 4 5 [6] 7 »
 

76. yura3d - 3 февраля 2010 — 16:36 - перейти к сообщению
altjo
Александр Михалицын
Спасибо, вроде бы разобрался Подмигивание

Ещё вопрос, может кто знает, возможно ли (и если возможно, то как) получить объект, который на данный момент в фокусе на странице?
77. altjo - 4 февраля 2010 — 12:27 - перейти к сообщению
Возможно как-то так

CODE:
<html>
<body onLoad="myButton.focus();">
<input type="Button" id="myButton" value="Element 1" onClick="function1();">
<input type="text" id="myTxt" value="Element 2" onClick="function1();">
<script language="JavaScript">
function function1() {
var m = document.activeElement.value;
alert('The active element is '+m);
}
</script>
</body>
</html>
78. yura3d - 11 февраля 2010 — 22:33 - перейти к сообщению
altjo
Спасибо огромное за полезные ссылки. В обоих случаях информация пригодилась, и я быстро смог решить возникшие проблемы Улыбка
79. yura3d - 12 июля 2010 — 10:19 - перейти к сообщению
Надо бы оживить темку Улыбка
Столкнулся с проблемой. Имеется функция-обработчик события onKeyDown. Задача состоит в том, что при нажатии клавиши Enter не должны вызваться родительские обработчики (проще говоря, нужно перехватить нажатие Enter'а и убить его, чтобы переход на новую строку не был вставлен в текстовое поле). Для IE6 проблема с запретом их вызова решилась просто:
CODE:
event.returnValue = false;

А вот с Оперой 9/10 разобраться не могу. Гугл выдаёт много информации по методам preventDefault(), stopPropagation() и т.п. Но у меня оно работать не хочет Огорчение
80. Александр Михалицын - 12 июля 2010 — 11:36 - перейти к сообщению
yura3d,
блин. -) А почему бы мне напрямую в асю не скинуть? Хорошо, что я зашел. -)
Правильно тебе гугл выдает. А что именно у тебя "не работает"?

Событие как ставишь? attachEvent/addEventListener?
CODE:
e.stopPropagation();//предотвращает всплытие
e.preventDefault();//предотвращает выполнение следствия события (переноса строки)
e.returnValue = false;
81. yura3d - 12 июля 2010 — 13:11 - перейти к сообщению
Александр Михалицын пишет:
Событие как ставишь? attachEvent/addEventListener?

По правде говоря, у меня реализовано несколько проще. Если немного углубиться в подробности, то есть некоторый span, который доступен для редактирования пользователями (атрибут contentEditable):
CODE:
<span contentEditable="true" onKeyDown="mykeydown(event);">Тут текст</span>

Далее следует фунция-обработчик:
CODE:
function mykeydown(event) {
if (!event) event = window.event;
if (event.keyCode == 13)
event.returnValue = false;
}

Этот способ работает в IE (по крайней мере в 6-ой его версии)

Проблема в том, что при редактировании текста в span'е в случае нажатия Enter, происходит полная ерунда. IE6 начинает заключать строки в теги <p></p>, в результате чего осуществляется переход не на одну, а на две строки (мне же нужен <br>). В Опере 9 span'ы почему-то начинают размножаться с каждым нажатием Enter. В Опере 10 похожая ситуация

Задача в том, чтобы перехватывать нажатие Enter и не позволять исполняться родительским обработчикам, которые творят эту ерунду. Достаточно будет лишь в дочернем обработчике добавить <br> в span (например, посредством innerHTML)

Сейчас ещё подумал. Ведь текст может быть вставлен и из буфера обмена, и при этом в нём могут быть переходы на новую строку. Видимо, весь алгоритм нужно свести к такой последовательности: сначала получаем обновлённый текст, выполняем необходимые преобразования, а затем отправляем его стандартным обработчикам
82. shyuser - 16 марта 2011 — 09:27 - перейти к сообщению
vipraskrutka, возможно так:
CODE:
<html>
<head>
<title>Простая страница</title>
<script language="JavaScript">
<!-- Маскируемся!
function calcArea()
{
$n = prompt (" Введите число" , " Введите число") ;
$m=$n/100;
if ($m<1)
{
$m=1;
}
else
{
if ($m>100)
{
$m=100;
};
};
$m=Math.round($m)+Math.round($n);
alert($m);
}
// Снимаем маскировку. -->
</script>
</head>
<body>
Щелкните <input type="button" value="ЗДЕСЬ" onClick="calcArea()"> чтобы вычислить!
</body>
</html>
83. bruno - 24 мая 2011 — 03:00 - перейти к сообщению
Есть такой скрипт:
CODE:
<script type="text/javascript">
function proverka(input) {
var value = input.value;
var rep = /[-\.;":'a-zA-Zа-яА-Я]/;
if (rep.test(value)) {
value = value.replace(rep, '');
input.value = value;
}
}
</script>
<input type="text" onkeyup="return proverka(this);" />

Он запрещает печатать в поле ввода любые символы кроме цифр. Работает отлично.
Но есть большая проблема.
Она заключается в том, что при вставки из буфера в это поле удаляется только один запрещённый символ, а надо чтобы удалялись все символы.
Что нужно сделать, помогите?
84. shyuser - 24 мая 2011 — 09:04 - перейти к сообщению
bruno, при вставке из буфера вводится более чем один символ - нужно поместить условие в цикл для проверки всех введенных символов в блоке.
85. bruno - 24 мая 2011 — 09:35 - перейти к сообщению
shyuser
Буду очень благодарен за пример.
Чесно говоря дуб дубом в этом деле.
86. shyuser - 24 мая 2011 — 15:56 - перейти к сообщению
bruno, в javascript, да и вообще в web-программировании, я тоже слабоват Улыбка
Не претендую на оптимальность и правильность, но что-то такое:
CODE:
<script type="text/javascript">
function proverka(input) {
var value = input.value;
var rep = /[-\.;":'a-zA-Zа-яА-Я]/;
for (var i=0; i<=input.value.length; i++) {
value = value.replace(rep, '');
}
input.value = value;
}
</script>
<input type="text" onkeyup="return proverka(this);">

P.S. Думаю, что в rep невозможно все символы запретные указать, и здесь скорее нужно отталкиваться от того какие можно и те, что не подходят, удалять.
(Добавление)
Вероятно, так проще, добавил опцию глобального поиска:
CODE:
<script type="text/javascript">
function proverka(input) {
var value = input.value;
var rep = /[-\.;":'a-zA-Zа-яА-Я]/g;
input.value = value.replace(rep, '');
}
</script>
<input type="text" onkeyup="return proverka(this);">
87. bruno - 24 мая 2011 — 21:53 - перейти к сообщению
shyuser спасибо!
Впринципе всё ок. Но только при вставке из буфера путём нажатия на правую кнопки мышки - всё равно вставляется. Но если вставлять через клавиши Shift+Insert то не вставляется, удаляется.
Я добавил запрет на работу правой кнопки мышки.
Впринципе задача решена. Спасибо.
88. shyuser - 25 мая 2011 — 04:04 - перейти к сообщению
bruno, можно попробовать добавить ещё события:
CODE:
<input type="text" onkeyup="return proverka(this);" onChange="return proverka(this);" onClick="return proverka(this);">
89. bruno - 25 мая 2011 — 05:01 - перейти к сообщению
shyuser
ДА, теперь суппер!
90. archi-mobile - 2 декабря 2011 — 15:33 - перейти к сообщению
Помогите сделать скрипт рабочим.
При регистрации "согласен" не переходит в register.php?{$sesid}
CODE:
<div align=center>
<form name=agree>
<input onclick=ok(); type=button value="Прочтение условий не менее 2-ти секунд!" name=agreeb>&nbsp;&nbsp;
<input onclick="self.location.href='index.php'" type=button value="Не согласен">
</form>
<script>
function ok()
{
var str = 'register.php?{$sesid}';
window.location=str.replace(/&amp;/g, '&');
}
var secs = 2;
document.agree.agreeb.disabled=true;

for(i=1;i<=secs;i++)
{
window.setTimeout("update(" + i + ")", i * 1000);
}

function update(num) {
if(num == secs) {
document.agree.agreeb.value ="Согласен";
document.agree.agreeb.disabled=false;
}
else {
printnr = secs-num;
document.agree.agreeb.value = "Пожалуйста, внимательно прочитайте условия, осталось " + printnr +" сек ";
}
}
</script>
</div>

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0406]     [ ]