Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   клавиатура всегда в нижнем регистре (https://javascript.ru/forum/misc/51200-klaviatura-vsegda-v-nizhnem-registre.html)

BARABANTEMO 28.10.2014 11:55

клавиатура всегда в нижнем регистре
 
пожалуйста подскажите как сделать чтобы при нажатии на это поле (input id="message" name="message") клавиатура вставала на нижний регистр и буквы писались бы только в нижнем регистре
спасибо всем

danik.js 28.10.2014 12:06

Цитата:

Сообщение от BARABANTEMO
клавиатура вставала на нижний регистр

Регистр ты не переключишь никак.
Можешь либо задать text-transform:lowercase в css (тогда нижний регистр будет только визуально) либо ловить события keypress и приводить ввод к нижнему регистру.

рони 28.10.2014 12:07

BARABANTEMO,
а перезаписывать value в нижнем регистре?

Erolast 28.10.2014 12:18

Еще не стоит забывать, что проверку на стороне клиента очень легко обойти. То есть, если это не чисто для удобства, то надо делать на сервере.

BARABANTEMO 28.10.2014 12:24

Цитата:

Сообщение от danik.js (Сообщение 337994)
ловить события keypress и приводить ввод к нижнему регистру.

можно пример как это делать

ruslan_mart 28.10.2014 12:31

http://learn.javascript.ru/play/HiS1Fb

<!DOCTYPE HTML>
<html>
  <head></head>
  
  <body>
    <textarea id="message"></textarea>
    <script>
      var message = document.getElementById('message');
      message.onpropertychange = message.oninput = function () {
        this.value = this.value.toLowerCase();
      };
    </script>
  </body>

</html>

рони 28.10.2014 12:37

Ruslan_xDD,
а курсор возвратить на место? :-?

ruslan_mart 28.10.2014 12:45

рони,

Как вариант. :stop:

http://learn.javascript.ru/play/bExpt

<!DOCTYPE HTML>
<html>
  <head></head>
  
  <body>
    <textarea id="message"></textarea>
    <script>
      var message = document.getElementById('message');
      message.onpropertychange = message.oninput = function() {
        var selection = this.selectionStart;
        this.value = this.value.toLowerCase();
        this.selectionEnd = selection;
      };
    </script>
  </body>

</html>

BARABANTEMO 28.10.2014 12:59

хорошо расскажу всю проблему
<style type="text/css" rel="stylesheet">
.contjil{
height: 17px;
width: 22px;
margin: 7px 7px 0 9px;
float: left;
overflow: hidden;
position: relative;
}
.flgjil{cursor: pointer;
background: url('http://www.myvideo.ge/v4_imgs/kbd_flags.png') no-repeat 0 0;
display: block;
height: 17px;
width: 50px;
position: absolute;
top:0;
left:0;
}
</style>

<!--SEARCH START-->
<form id="jilform">
<div class="contjil">
<a class="flgjil" id="cbdjil" title="ქართული კლავიატურის გათიშვა"></a>
</div>
<input id="kbdjil" style="display:none;" type="checkbox" checked="" name="geo">
<input id="message" name="message">
</form>
<!--SEARCH END-->

<script type="text/javascript">
function handleKeys(e) {
var t = window.event ? event : e;
if (t.altKey || t.ctrlKey) return true;
var n;
n = e.which;
if (e.which == 96) geoobj.checked = !geoobj.checked;
var r = formobj.value.length - 1;
if (e.which == 96) {
var i = e.target;
var s = i.selectionStart;
i.value = i.value.substring(0, i.selectionStart) + "" + i.value.substring(i.selectionStart);
i.setSelectionRange(s, s);
return false
}
if (geoobj.checked) {
for (r = 0; r <= geo.length; r++) {
if (eng[r] == e.which) {
var i = e.target;
var s = i.selectionStart;
i.value = i.value.substring(0, i.selectionStart) + String.fromCharCode(geo[r]) + i.value.substring(i.selectionEnd);
s++;
i.setSelectionRange(s, s);
return false
}
}
status = n
}
return true
}
function changeVal() {
formobj2 = document.REPLIER.Post;
geoobj2 = document.REPLIER.geo;
formobj = formobj2;
geoobj = geoobj2;
var e = new Is;
if (e.konqueror && formobj.value == "") {
formobj.value = " "
}
if (e.ie4up) {
if (event.keyCode == 96) geoobj.checked = geoobj.checked ? false : true;
if (event.keyCode == 96) event.keyCode = ""
} else if (e.nav6up || e.konqueror || e.safari) {
document.onkeypress = handleKeys
}
if (geoobj.checked) {
if (e.ie4up || e.opera && !e.opera7up) {
var t;
t = event.keyCode;
for (i = 0; i <= geo.length; i++) {
if (eng[i] == event.keyCode) {
event.keyCode = geo[i]
}
}
status = t
} else if (e.nav6up || e.opera) {
document.onkeypress = handleKeys
} else {
alert("We doesn't currently support your browser");
geoobj.checked = false
}
}
}
eng = new Array(97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 87, 82, 84, 83, 67, 74, 90);
geo = new Array(4304, 4305, 4330, 4307, 4308, 4324, 4306, 4336, 4312, 4335, 4313, 4314, 4315, 4316, 4317, 4318, 4325, 4320, 4321, 4322, 4323, 4309, 4332, 4334, 4327, 4310, 4333, 4326, 4311, 4328, 4329, 4319, 4331, 91, 93, 59, 39, 44, 46, 96);
(function () {
String.prototype.pasteTo = function (e) {
e.focus();
if (document.selection) {
var t = document.selection.createRange();
if (t) {
t.text = this
}
} else if (e.selectionStart != undefined) {
var n = e.scrollTop,
r = e.selectionStart,
i = e.selectionEnd;
var s = e.value.substring(0, r) + this + e.value.substring(i, e.value.length);
e.value = s;
e.scrollTop = n;
e.setSelectionRange(r + this.length, r + this.length)
} else {
e.value += this;
e.setSelectionRange(e.value.length, e.value.length)
}
}, String.prototype.translateToKA = function () {
var e, t, n = [],
r = "abgdevzTiklmnopJrstufqRySCcZwWxjh";
for (var i = 0; i < this.length; i++) {
t = this.substr(i, 1);
if ((e = r.indexOf(t)) >= 0) {
n.push(String.fromCharCode(e + 4304))
} else {
n.push(t)
}
}
return n.join("")
}, GeoKBD = {
browser: {
isOpera: navigator.userAgent.toLowerCase().indexOf("opera") > -1,
isIe: navigator.userAgent.toLowerCase().indexOf("msie") > -1,
isIe6: navigator.userAgent.toLowerCase().indexOf("msie 6") > -1,
isIe7: navigator.userAgent.toLowerCase().indexOf("msie 7") > -1
},
event: {
get: function (e) {
return e || window.event
},
getKeyCode: function (e) {
e = this.get(e);
return e.keyCode || e.which
},
targetIs: function (e, t) {
e = this.get(e);
var n = e.target || e.srcElement;
return n.tagName.toLowerCase() == t ? n : null
},
attach: function (e, t, n, r) {
if (e.addEventListener) {
e.addEventListener(t, n, r)
} else if (e.attachEvent) {
return e.attachEvent("on" + t, n)
} else {
e["on" + t] = n
}
},
detach: function (e, t, n, r) {
if (e.removeEventListener) {
e.removeEventListener(t, n, r)
} else if (e.detachEvent) {
e.detachEvent("on" + t, n)
} else {
e["on" + t] = null
}
},
cancel: function (e) {
e = this.get(e);
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault()
} else {
e.cancelBubble = true;
e.returnValue = false
}
}
},
keyHandlers: {},
addKeyHandler: function (e, t) {
if (typeof e == "string") {
e = e.charCodeAt(0)
}
if (!this.keyHandlers[e]) {
this.keyHandlers[e] = []
}
this.keyHandlers[e].push(t)
},
handleKey: function (e) {
if (GeoKBD.keyHandlers[e]) {
var t = null;
for (var n = 0; n < GeoKBD.keyHandlers[e].length; n++) {
t = GeoKBD.keyHandlers[e][n];
if (t.constructor && t.constructor == Array) {
t[0][t[1]].call(t[0], e)
} else {
t(e)
}
}
}
},
map: function (e, t, n) {
var r = this,
i = [],
s = [];
if (e) {
if (e.constructor) {
if (e.constructor == String) {
i.push(e)
} else if (e.constructor == Array) {
i = e
}
if (i.length) {
for (var o in i) {
if (document.forms[i[o]]) {
s.push(document.forms[i[o]])
}
}
}
} else {
s.push(e)
}
} else {
s = document.forms
}
for (var o = 0; o < s.length; o++) {
e = s[o];
if (!e.fields || e.fields == undefined) e.fields = {};
if (e.ka == undefined) e.ka = e[n] ? e[n].checked : true;
if (t) {
if (typeof t == "string") t = [t];
for (var u = 0; u < t.length; u++) {
if (e[t[u]] && !e.fields[t[u]]) e.fields[t[u]] = t[u]
}
} else {
var a, f;
for (var u = 0; u < e.elements.length; u++) {
if (e.elements[u].type) {
a = e.elements[u].name || e.elements[u].id;
f = e.elements[u].type.toLowerCase();
if (a && (f == "text" || f == "textarea")) {
e.fields[a] = a
}
}
}
}
n = n || "geo";
e.switcher = n;
e.onkeypress = function (e) {
e = r.event.get(e);
if (e.altKey || e.ctrlKey) return;
if (!r.browser.isIe && !r.browser.isOpera && !e.charCode) {
return
}
var t, i = n,
s = r.event.getKeyCode(e);
if (s == 96) {
if (this[i]) {
this.ka = this[i].checked = !this[i].checked
} else {
this.ka = !this.ka
}
return false
} else if (this[i]) {
this.ka = this[i].checked
}
if (!this.ka) return;
if (t = r.event.targetIs(e, "textarea") || r.event.targetIs(e, "input")) {
if (!this.fields[t.name || t.id]) return;
text = String.fromCharCode(s);
kaText = text.translateToKA();
if (kaText != text) {
if (GeoKBD.browser.isIe) {
e.keyCode = kaText.charCodeAt(0)
} else {
kaText.pasteTo(t);
return false
}
}
}
}
}
e = s = i = null
},
mapIFrame: function (e) {
var t = function (e) {
if (e.altKey || e.ctrlKey) return;
var t = (e.target || e.srcElement).ownerDocument;
if (t.ka == undefined) t.ka = true;
var n = GeoKBD.event.getKeyCode(e);
var r = String.fromCharCode(n);
var i, s;
if (parent.document.forms[t.parentForm]) {
i = parent.document.forms[t.parentForm];
if (i.switcher && i[i.switcher]) {
s = i[i.switcher]
}
}
if (n == 96) {
t.ka = !t.ka;
if (s) s.checked = t.ka;
GeoKBD.event.cancel(e)
} else if (s) {
t.ka = s.checked
}
i = s = null;
if (t.ka) {
var o = r.translateToKA();
if (o != r) {
if (!GeoKBD.browser.isIe) {
t.execCommand("InsertHTML", false, o)
} else {
var u = t.selection.createRange();
u.pasteHTML(o)
}
GeoKBD.event.cancel(e)
}
}
};
var n = function (e) {
if (!GeoKBD.browser.isIe) {
GeoKBD.event.attach(this.document, "keypress", t, true);
GeoKBD.event.detach(this, "focus", n, true)
} else {
GeoKBD.event.attach(this.contentWindow.document, "keypress", t, true);
this.onfocus = null
}
};
var r = window.setInterval(function () {
var t = typeof e == "string" ? document.getElementById(e) : e();
if (t) {
for (var i = t.parentNode; i && i != document.body; i = i.parentNode) {
if (/form/i.test(i.tagName)) {
if (t.contentWindow.document) {
t.contentWindow.document.parentForm = i.name || i.id
} else {
t.document.parentForm = i.name || i.id
}
break
}
}
if (!GeoKBD.browser.isIe) {
GeoKBD.event.attach(t.contentWindow, "focus", n, true)
} else {
t.onfocus = n
}
t = null;
window.clearInterval(r)
}
}, 100)
}
};
window.GeoKBD = GeoKBD
})();        
$('#cbdjil').click(function(e)
{
e.preventDefault();
$('#kbdjil').click();
if($('#kbdjil').is(":checked")) {
$(this).attr('title','ქართული კლავიატურის გათიშვა');
$(this).animate({
left:'+0px'
},'fast');
} else {
$(this).attr('title','ქართული კლავიატურის ჩართვა');
$(this).animate({
left:'-29px'
},'fast');
}
});
$("#message").keypress(function(event)
{
if(event.which == 96) {
if($('#kbdjil').is(":checked")) {
$('#cbdjil').attr('title','ქართული კლავიატურის ჩართვა');
$('#cbdjil').animate({
left:'-29px'
},'fast');
} else {
$('#cbdjil').attr('title','ქართული კლავიატურის გათიშვა');
$('#cbdjil').animate({
left:'+0px'
},'fast');
}
}
});
GeoKBD.map('jilform','message');    
</script>

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

BARABANTEMO 28.10.2014 13:05

если кто знает подскажите где можно заказать подобную переделку скрипта


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