0

問題があります。ユーザーが 10 文字を超えるデータを入力できないようにするための TextBox の検証があります。keyprees に検証を適用しましたが、ユーザーが長さ 10 を超えるデータを貼り付けるように制限することはできません。私は検索して貼り付けイベントを試しましたが、ユーザーが値を貼り付けるのを制限していないため、機能していません。動かない。

コード-

$('#EMName').bind('paste', function (e) {
        var self = $(this);
        var v = false;
        var flag = setTimeout(function () {

            var len = $(self).val().length;
            if (len > 10) {
                alert("false");
                v = false;
                return false
            }
            else {
                alert("true");
                v = true;
                return true;
            }

        }, 0);
        if (v == false)
            e.preventDefault();   
});
4

3 に答える 3

1

これは、当社のアプリケーションでも経験した問題です。貼り付けられたテキストだけでなく、フィールドに事前入力するさまざまなブラウザー プラグインや、イベントを発生させないブラウザー自体にフォーム データを保存することもできます。

これを克服できた唯一の方法は、setInterval() を使用して定期的にチェックすることであり、これらのイベントを見逃すことはありませんでした。

于 2012-11-29T08:51:43.163 に答える
1

さて、実際にはユーザーに貼り付けを許可しません。そうでない場合は、以下が機能します

<input id="EMName" value="" onpaste="return false" maxlength="10" />
于 2012-11-29T08:55:11.497 に答える
0

基本的に、値の変更を許可するその入力について、できるだけ多くのイベントを監視する必要があります。私は自分のウェブサイトの 1 つで似たようなものを使用しています。

$(document).ready(function(){
    $('#target').on('propertychange keyup input paste', function(){
        var target = $(this);
        var text = target.val();
        if (text.length > 10) {
            target.val(text.substring(0, 9));
        }
    });
});​

デモ

これは、入力、ctrl + v、右クリックの貼り付け、およびその他のほとんどの操作で機能します。ブラウザのプラグインが設定されている場合に機能するかどうかはわかりません。

于 2012-11-29T08:56:08.660 に答える