1

テキスト領域があります。ユーザーはテキスト領域に入力できます。最初は小文字になりますが、ユーザーが「T(トグル)」ボタンをクリックすると、その後に入力したものは前の大文字に変わります小文字のみになります。もう一度ユーザーが「T(トグル ボタン)」をクリックすると、その後の入力は小文字で表示されます。試しましたが、うまくいきませんでした。

<input type="button" name="toggleCase" id="toggleCase" value="T"  style="width:40px;" onclick="javascript:changeCase(this);" />
<textarea tabindex="1" cols="39" rows="2" onkeydown="checkTxtCase(this);"  name="titleText1">&nbsp;</textarea>

JS:

function checkTxtCase(elmObj) {
    setCursorToTextEnd(elmObj.id);
    var txtVal = elmObj.value;
    var txtLen = txtVal.length;

    prevSize = txtLen;
    var txtLast = txtVal.substring(txtLen - 1, txtLen);

    if (textCase == 'LOWER') {
        elmObj.value = txtVal.substring(0, txtLen - 1) + txtLast.toLowerCase();
    } else {
        elmObj.value = txtVal.substring(0, txtLen - 1) + txtLast.toUpperCase();
    }
    return true;
}


function setCursorToTextEnd(textControlID) {
    var text = document.getElementById(textControlID);
    if (text != null && text.value.length > 0) {
        if (text.createTextRange) {
            var FieldRange = text.createTextRange();
            FieldRange.moveStart('character', text.value.length);
            FieldRange.collapse();
            FieldRange.select();
        } else if (text.setSelectionRange) {
            var textLength = text.value.length;
            text.setSelectionRange(textLength, textLength);
        }
    }
}


var textCase = 'UPPER';
var prevSize = 0;

function changeCase() {
    document.getElementById('titleText1').focus();
    textCase = (textCase == 'LOWER') ? 'UPPER' : 'LOWER';
}

どんな提案でも大歓迎です。

4

2 に答える 2

2
var textCase = 'toLowerCase';
var pos = 0;

function changeCase() {
    var textarea = document.getElementsByName('titleText1')[0];
    pos      = textarea.value.length;
    textCase = (textCase == 'toUpperCase') ? 'toLowerCase' : 'toUpperCase';
    textarea.focus();
}

function checkTxtCase(elem) {
    var l = elem.value.substr(pos);
    elem.value = elem.value.substr(0, pos) + l[textCase]();
}

フィドル

于 2013-06-04T11:30:06.307 に答える
0

私はあなたのためのプラグインを見つけました。それは本当にクールで、本当にうまくいきます。

http://jquerybyexample.blogspot.com/2011/12/jquery-plugin-for-uppercase-lowercase.html

これはあなたを助けるでしょう

私はあなたのためにフィドルを作成しました。確認してください

http://jsfiddle.net/KKX5G/2/

$('#Txt').Setcase({caseValue : 'lower'});
于 2013-06-04T11:19:42.773 に答える