Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / onkeyup и onchange одновременно / 10 сообщений из 10, страница 1 из 1
30.08.2012, 08:57:10
    #37936554
Полено
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onkeyup и onchange одновременно
Имеемм следующий код:

<!DOCTYPE html>
<html>
<head>
<script>
function upperCase(aID){
var x=document.getElementById(aID);
x.value=x.value.toUpperCase();
}
</script>
</head>
<body>
Enter your name: <input type="text" id="fname" onkeyup="upperCase(id)" />
<p>onkeyp отдельно - работает</p>
Enter your name: <input type="text" id="fname1" onchange="upperCase(id)" />
<p>onchange отдельно - работает </p>
Enter your name: <input type="text" id="fname2" onkeyup="upperCase(id);" onchange="alert('Worked!')"/>
<p>onkeyup и onchange - не работает</p>
Enter your name: <input type="text" id="fname3" onblur="upperCase(id);" onchange="alert('Worked!')"/>
<p>onblur и onchange - работает</p>
</body>
</html>

Почему для третьего поля не срабатывает событие onchange?
...
Рейтинг: 0 / 0
30.08.2012, 09:40:57
    #37936578
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onkeyup и onchange одновременно
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<!DOCTYPE html>
<html>
<head>
<script>
function upperCase(aID){
 var x=document.getElementById(aID);
 x.value=x.value.toUpperCase();
}
</script>
</head>
<body>
Enter your name: <input type="text" id="fname" onkeyup="upperCase(id)" />
<p>onkeyp отдельно - работает</p>
Enter your name: <input type="text" id="fname1" onchange="upperCase(id)" />
<p>onchange отдельно - работает </p>
Enter your name: <input type="text" id="fname2" onkeyup="upperCase(id);" onchange="alert('Worked!')"/>
<p>onkeyup и onchange - не работает</p>
Enter your name: <input type="text" id="fname3" onblur="upperCase(id);" onchange="alert('Worked!')"/>
<p>onblur и onchange - работает</p>
</body>
</html>
...
Рейтинг: 0 / 0
30.08.2012, 09:47:39
    #37936590
mit1905
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onkeyup и onchange одновременно
Полено,

onchange может сработать и при программном изменении x.value
onchange происходит в момент потери фокуса (может и по клавише <Enter> - в FireFox например).
Счетчик поставь в твой функции upperCase() - сколько раз она вызывается, сбрасывай счетчик по событию onblur.
Если использовать alert() - можно не увидеть много чего, что происходит, так как alert() останавливает выполнение скрипта.
...
Рейтинг: 0 / 0
30.08.2012, 10:13:07
    #37936623
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onkeyup и onchange одновременно
Полено, пользуйся более подходящими событиями:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<!DOCTYPE html>
<html>  
<head></head>  
<body>
  Enter your name: <input id="fname" type="text" />
  <script>      
    var fname = document.getElementById('fname');
      
    fname.oninput = fname.onpropertychange = onPropertyChange;
      
    function onPropertyChange() {        
      this.value = this.value.toUpperCase();
    }      
  </script>
</body>
</html>
...
Рейтинг: 0 / 0
30.08.2012, 10:36:31
    #37936660
Полено
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onkeyup и onchange одновременно
skyANAПолено, пользуйся более подходящими событиями:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<!DOCTYPE html>
<html>  
<head></head>  
<body>
  Enter your name: <input id="fname" type="text" />
  <script>      
    var fname = document.getElementById('fname');
      
    fname.oninput = fname.onpropertychange = onPropertyChange;
      
    function onPropertyChange() {        
      this.value = this.value.toUpperCase();
    }      
  </script>
</body>
</html>



Вообще здорово, замена регистра происходит без вывода первоначального символа.
Но основную проблему это не решает - нужно вызвать событие по окончании редактирования (потере фокуса или нажатии ентер).
Как ?!
...
Рейтинг: 0 / 0
30.08.2012, 10:39:11
    #37936666
Полено
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onkeyup и onchange одновременно
ПоленоskyANAПолено, пользуйся более подходящими событиями:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<!DOCTYPE html>
<html>  
<head></head>  
<body>
  Enter your name: <input id="fname" type="text" />
  <script>      
    var fname = document.getElementById('fname');
      
    fname.oninput = fname.onpropertychange = onPropertyChange;
      
    function onPropertyChange() {        
      this.value = this.value.toUpperCase();
    }      
  </script>
</body>
</html>



Вообще здорово, замена регистра происходит без вывода первоначального символа.
Но основную проблему это не решает - нужно вызвать событие по окончании редактирования (потере фокуса или нажатии ентер).
Как ?!

И так же непонятно как быть если число элементов типа TEXT на странице не фиксировано - от 0 и до бесконечности (таблица спецификации документа).
...
Рейтинг: 0 / 0
30.08.2012, 10:47:31
    #37936691
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onkeyup и onchange одновременно
skyANA
Код: javascript
1.
fname.oninput = fname.onpropertychange = onPropertyChange;


Э-э-э... А что, onpropertychange стало уже кросс-browser'ным?
...
Рейтинг: 0 / 0
30.08.2012, 11:53:02
    #37936810
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onkeyup и onchange одновременно
Ex_SoftskyANA
Код: javascript
1.
fname.oninput = fname.onpropertychange = onPropertyChange;


Э-э-э... А что, onpropertychange стало уже кросс-browser'ным?Нет, поэтому и используется oninput .
...
Рейтинг: 0 / 0
30.08.2012, 11:57:59
    #37936823
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onkeyup и onchange одновременно
ПоленоВообще здорово, замена регистра происходит без вывода первоначального символа.
Но основную проблему это не решает - нужно вызвать событие по окончании редактирования ( потере фокуса или нажатии ентер).
Как ?!
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<!DOCTYPE html>
<html>  
<head></head>  
<body>
  Enter your name: <input id="fname" onblur="alert('Done!')" type="text" />
  <script>      
    var fname = document.getElementById('fname');
      
    fname.oninput = fname.onpropertychange = onPropertyChange;
      
    function onPropertyChange() {        
      this.value = this.value.toUpperCase();
    }      
  </script>
</body>
</html>
...
Рейтинг: 0 / 0
30.08.2012, 11:59:31
    #37936829
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onkeyup и onchange одновременно
ПоленоИ так же непонятно как быть если число элементов типа TEXT на странице не фиксировано - от 0 и до бесконечности (таблица спецификации документа).Как, как... Пробежаться по ним в цикле и подписаться на события.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / onkeyup и onchange одновременно / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]