Specifying maxlength for multiline textbox

后端 未结 19 2115
感动是毒
感动是毒 2020-11-27 15:21

I\'m trying to use asp:


I want a way to spe

19条回答
  •  不知归路
    2020-11-27 16:07

    I tried different approaches but every one had some weak points (i.e. with cut and paste or browser compatibility). This is the solution I'm using right now:

    function multilineTextBoxKeyUp(textBox, e, maxLength) {
        if (!checkSpecialKeys(e)) {
            var length = parseInt(maxLength);
            if (textBox.value.length > length) {
                textBox.value = textBox.value.substring(0, maxLength);
            }
        }
    }
    
    function multilineTextBoxKeyDown(textBox, e, maxLength) {
        var selectedText = document.selection.createRange().text;
        if (!checkSpecialKeys(e) && !e.ctrlKey && selectedText.length == 0) {
            var length = parseInt(maxLength);
            if (textBox.value.length > length - 1) {
                if (e.preventDefault) {
                    e.preventDefault();
                }
                else {
                    e.returnValue = false;
                }
            }
        }
    }
    
    function checkSpecialKeys(e) {
        if (e.keyCode != 8 && e.keyCode != 9 && e.keyCode != 33 && e.keyCode != 34 && e.keyCode != 35 && e.keyCode != 36 && e.keyCode != 37 && e.keyCode != 38 && e.keyCode != 39 && e.keyCode != 40) {
            return false;
        } else {
            return true;
        }
    }
    

    In this case, I'm calling multilineTextBoxKeyUp on key up and multilineTextBoxKeyDown on key down:

    myTextBox.Attributes.Add("onkeyDown", "multilineTextBoxKeyDown(this, event, '" + maxLength + "');");
    myTextBox.Attributes.Add("onkeyUp", "multilineTextBoxKeyUp(this, event, '" + maxLength + "');");
    

提交回复
热议问题