如何过滤TextArea中粘贴的值

时间:2015-07-02 05:56:10

标签: javascript jquery paste jquery-events

有文本区域我们输入分号分隔值,能够处理键盘事件并成功验证。如何在复制粘贴上验证相同。

$(function () {
    var kpi = document.getElementById('<%=this.d.ClientID%>').value;
    var tb = $('#<%= TextBox.ClientID %>');
    $(tb).keypress(function (e) {
        var regex = new RegExp("[0-9;]+$");
        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
        if (regex.test(str) && !($(this).val().match(/;{2,}/))) {
            var as = $(this).val().match(/;/ig) || [];
            var len = as.length;
            if (len < kpi) {
                return true;
            }
        }
        e.preventDefault();
        return false;
    });
    $(tb).keyup(function (e) {
        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
        if (($(this).val().match(/[;]{2,}/g))) {
            var shortenedString = $(this).val().substr(0, ($(this).val().length - 1));
            $(this).val(shortenedString);
            return true;
        }
        e.preventDefault();
        return false;
    });
    $(tb).on('paste input propertychange', function (e) {
        //Validate interger with ; on paste and rest not allowed
    })
});

2 个答案:

答案 0 :(得分:0)

您可以尝试使用keyup事件对输入进行后验证。在此之前,textarea中的粘贴值不可用,例如在按键时。您可以通过检查确定它是否为粘贴,例如:

event.ctrlKey

答案 1 :(得分:0)

您可以使用keyup事件,替代尝试您的实现可以是这样的:

$(tb).live('keyup', function (e) {
     this.value = this.value.replace(/[;]{2,}/g, "");
       }
 });

这将在粘贴到textarea时将输入的值替换为分号。