Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / а---->А / 13 сообщений из 13, страница 1 из 1
21.09.2012, 16:38:58
    #37967685
feanorcheg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а---->А
Задача проста, решение уже пол дня ищу. Надо чтобы в поле ввода можно было вводить только буквы, при том только в верхнем регистре. Пишу в СУБД CACHE по технологии Zen, но буду рад и простому HTML(javascript, jquery)-примеру...
...
Рейтинг: 0 / 0
21.09.2012, 17:18:54
    #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
21.09.2012, 17:29:17
    #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
21.09.2012, 18:34:54
    #37967821
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а---->А
mage.lan, skyANA,

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

а paste из контекстного меню тоже обрабатывается? )
нет
...
Рейтинг: 0 / 0
21.09.2012, 20:58:41
    #37967934
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а---->А
feanorchegНадо чтобы в поле ввода можно было вводить только буквы, при том только в верхнем регистре
Нужно не ввод контролировать... А например просто запись данных.
Если там только буквы - просто перевести в верхний регистр и записать. Если есть еще какие-то символы - не записывать, а дать предупреждение, де так не пойдет.
...
Рейтинг: 0 / 0
21.09.2012, 22:46:52
    #37968011
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а---->А
pattern ?
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.09.2012, 09:54:47
    #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
24.09.2012, 10:18:48
    #37969440
feanorcheg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а---->А
krvsa,

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

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

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

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


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