在文本字段中将文本大写为用户输入而不使用css text-transform?

时间:2013-06-26 17:40:14

标签: javascript jquery

我已经使用css解决了这个问题,但我不允许使用css将文本大写为用户类型,然后在提交之前将提交的数据更改为大写?任何人都可以使用jquery / JS来帮助我。

4 个答案:

答案 0 :(得分:3)

keyup event上。只需应用该方法转换为大写

this.value.toUpperCase();

<强> Check Fiddle

但是如果您希望在提交数据之前将文本设为大写。那么最好转换为upperCase一次,而不是在keyup event ..

中绑定它
// submit here
      var data = $('#input')[0].value.toUpperCase();

<强> Change Event fiddle

$("input").on('keyup', function(e) {
    if( [8,37,38].indexOf(e.keyCode) > -1 ) {
        return;
    }
    this.value = this.value.toUpperCase();
});

<强> Another fiddle

您可以使用键码并检查是否按下了退格键或箭头键。否则将其归还或归还。

答案 1 :(得分:1)

您可以使用keyup事件:

$("#idOfInput").keyup(function() {
    this.value = this.value.toUpperCase();
});

演示:http://jsfiddle.net/Sqef8/

答案 2 :(得分:1)

您可以在keydown事件中捕获到z,并用A-Z替换所选文本:

    function ucase(event, source) {
        var evt = event ? event : window.event;
        if (evt.keyCode >= 65 && evt.keyCode <= 90) {
            textboxReplaceSelect(source, String.fromCharCode(evt.keyCode).toUpperCase());
            return false;
        }
        return true;
    }

    function textboxReplaceSelect(oTextbox, sText) {
        var isOpera = navigator.userAgent.indexOf("Opera") > -1;
        var isIE = navigator.userAgent.indexOf("MSIE") > 1 && !isOpera;
        var isMoz = navigator.userAgent.indexOf("Mozilla/5.") == 0 && !isOpera;
        if (isIE) {
            var oRange = document.selection.createRange();
            oRange.text = sText;
            oRange.collapse(true);
            oRange.select();
        } else if (isMoz) {
            var iStart = oTextbox.selectionStart;
            oTextbox.value = oTextbox.value.substring(0, iStart) + sText + oTextbox.value.substring(oTextbox.selectionEnd, oTextbox.value.length);
            oTextbox.setSelectionRange(iStart + sText.length, iStart + sText.length);
        }

        oTextbox.focus();
    }

如何调用它的示例:

    <input type="text" onkeydown="return ucase(event,this);" />

http://jsfiddle.net/YbD2N/4/

答案 3 :(得分:0)

在键盘功能上,文本框大写,但编辑光标位置时总是强制到大多数浏览器结束。它就像一个魅力

$(selector).on('keyup',function(){
   var start = this.selectionStart,
       end = this.selectionEnd;     
       this.value = this.value.toUpperCase();
       this.setSelectionRange(start, end);
});