powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / а---->А
13 сообщений из 13, страница 1 из 1
а---->А
    #37967685
feanorcheg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача проста, решение уже пол дня ищу. Надо чтобы в поле ввода можно было вводить только буквы, при том только в верхнем регистре. Пишу в СУБД CACHE по технологии Zen, но буду рад и простому HTML(javascript, jquery)-примеру...
...
Рейтинг: 0 / 0
а---->А
    #37967732
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feanorcheg,

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

мы делали какое-то подобное решение, правда для других целей.
основная фишка, что in по массиву - самый быстрый способ понять, что символ пригоден для ввода.
не уверен, что это пашет в ослике ниже 8, но это уже детали, там можно дописать работу с каретками.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
var caps_ru_en = {
		'А': 'F', 'Б': '<', 'В': 'D', 'Г': 'U', 'Д': 'L', 'Е': 'T', 'Ё': '~', 'Ж': ':', 'З': 'P', 'И': 'B', 'Й': 'Q', 'К': 'R', 'Л': 'K', 'М': 'V', 'Н': 'Y', 'О': 'J', 'П': 'G', 
		'Р': 'H', 'С': 'C', 'Т': 'N', 'У': 'E', 'Ф': 'A', 'Х': '{', 'Ц': 'W', 'Ч': 'X', 'Ш': 'I', 'Щ': 'O', 'Ъ': '}', 'Ы': 'S', 'Ь': 'M', 'Э': '\"', 'Ю': '>', 'Я': 'Z'
	}, caps_en = {
		'A': '', 'B': '', 'C': '', 'D': '', 'E': '', 'F': '', 'G': '', 'H': '', 'I': '', 'J': '', 'K': '', 'L': '', 'M': '', 'N': '', 'O': '', 'P': '', 'Q': '', 'R': '', 
		'S': '', 'T': '', 'U': '', 'V': '', 'W': '', 'X': '', 'Y': '', 'Z': ''
	}, 	chartable: {}
$.extend(chartable, caps_ru_en, caps_en);
function inputType(s){
	return s in chartable ? s : '';
}
$('#my_input').keypress(function(e){
	if (e.which > 31 && !e.ctrlKey && !e.altKey) {
		var letter = String.fromCharCode(e.which);
		if (letter !== inputType(letter)) {
			if (e.preventDefault) e.preventDefault();
			var result = this.value.substring(0, this.selectionStart) + inputType(letter);
			this.value = result + this.value.substr(this.selectionEnd);
			this.selectionStart = this.selectionEnd = result.length;
			return false;
		}
	}
});
...
Рейтинг: 0 / 0
а---->А
    #37967740
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я в своё время тоже извращался... Правда мне чётко надо было выводить английские буквы :)
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
<!DOCTYPE HTML>
<html>  
  <head></head>  
  <body>
    <textarea onkeydown="onKeyDown(this, event)"></textarea>
    <script>
      function appendTo(element, value) {
        var oldValue = element.value;

	element.onblur = function() {
	  if (element.onchange && oldValue != element.value)
	    element.onchange();
	};

	if (document.selection) {
	  // IE support
	  var range = document.selection.createRange();
	  // If some text is selected then clear the selection
	  if (range.text)
	    document.selection.clear();
	  range.text += value;
	} else if (element.selectionStart > -1) {
	  // Google Chrome / Mozilla Firefox support
	  var selectionEnd = element.selectionEnd;
	  var selectionStart = element.selectionStart;
	  // Clear current value
	  element.value = "";
	  // Append left part
	  if (selectionStart > 0)
	    element.value = oldValue.substring(0, selectionStart);
	  // Append pressed key character
	  element.value += value;
	  // Append right part
	  if (selectionEnd < oldValue.length)
	    element.value += oldValue.substring(selectionEnd, oldValue.length);
	  element.selectionEnd = selectionStart + 1;
	  element.selectionStart = selectionStart + 1;
	} else
	  element.value += value;
      }
      
      function preventDefault(e) {
        e.preventDefault ? e.preventDefault() : e.returnValue = false;
        return false;
      }

      function onKeyDown(sender, e) {
        e = e || window.event;
        // Ctrl + C, Ctrl + V, Ctrl + X
        if (e.ctrlKey && (e.keyCode == 67 || e.keyCode == 86 || e.keyCode == 88)) return true;
        // In Opera, you can't suppress the default action onkeydown, you have to use onkeypress to do so.
        sender.onkeypress = function() { return false };
        // Allow english characters (a - 65, z - 90).
        if (!e.ctrlKey && e.keyCode > 64 && e.keyCode < 91) {
          appendTo(sender, String.fromCharCode(e.keyCode));
          return preventDefault(e);
        }
        sender.onkeypress = null;
        // Check some other key codes
        // Allow following key codes: tab, enter, shift, ctrl, alt
        switch (e.keyCode) {           
          case 8:   // backspace
          case 9:   // tab
          case 13:  // enter
          case 16:  // shift
          case 17:  // ctrl
          case 18:  // alt
          case 20:  // caps lock
          case 27:  // escape
          case 32:  // space
          case 35:  // end
          case 36:  // home
          case 37:  // left arrow
          case 39:  // right arrow
          case 45:  // insert
          case 46:  // delete
          case 109:
          case 110: // decimal point
          case 189: // dash
          case 222: // single quote
            return true;
          default:
            return preventDefault(e);
        }
      }
    </script>
  </body>
</html>
...
Рейтинг: 0 / 0
а---->А
    #37967821
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mage.lan, skyANA,

а paste из контекстного меню тоже обрабатывается? )
...
Рейтинг: 0 / 0
а---->А
    #37967869
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Мечmage.lan, skyANA,

а paste из контекстного меню тоже обрабатывается? )
нет
...
Рейтинг: 0 / 0
а---->А
    #37967934
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feanorchegНадо чтобы в поле ввода можно было вводить только буквы, при том только в верхнем регистре
Нужно не ввод контролировать... А например просто запись данных.
Если там только буквы - просто перевести в верхний регистр и записать. Если есть еще какие-то символы - не записывать, а дать предупреждение, де так не пойдет.
...
Рейтинг: 0 / 0
а---->А
    #37968011
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pattern ?
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
а---->А
    #37968132
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Меча paste из контекстного меню тоже обрабатывается? )Я обрабатывал так:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<textarea onchange="onChange(this, event)"></textarea>
<script>
  function onChange(sender, e) {
    if (sender.value.match(/[a-z]/))
      sender.value = sender.value.toUpperCase();
    // Delete non-english values
    if (!sender.value.match(/^[A-Z \'-\.]*$/))
      sender.value = "";
  }
</script>
...
Рейтинг: 0 / 0
а---->А
    #37969440
feanorcheg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

заказщику нужно именно вводить в верхнем регистре. Пока сделаю изменение по событию onChange. Если найдется что-нибудь подходящее - дайте знать плз
...
Рейтинг: 0 / 0
а---->А
    #37969471
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feanorcheg, дак вы можете использовать CSS text-transform: uppercase - все символы текста становятся прописными (верхний регистр).
...
Рейтинг: 0 / 0
а---->А
    #37969524
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feanorchegзаказщику нужно именно вводить в верхнем регистре
Таки объясни, что ввод это одно... Он должен быть максимально удобен пользователю. А обработка и хранение - это другое. Оно будет как надо.
...
Рейтинг: 0 / 0
а---->А
    #37969575
feanorcheg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,

Подскажите код? Я писал в обработчике - ноль реакции
...
Рейтинг: 0 / 0
а---->А
    #37969816
feanorcheg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работает код:

$(".uppertext").css("text-transform", "uppercase");

всем спс
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / а---->А
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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