плагин jQuery для предотвращения ввода любого входа, не соответствующего regexp

console.log(window.location.origin)

Добавить файл CSS в заголовок

Вы можете просто добавить свое условие: [117 ]

if(window.location.origin == "example.com")
 // condition 

6
задан Brock Adams 6 July 2010 в 04:12
поделиться

4 ответа

jquery-keyfilter plugin - does what is needed.

5
ответ дан 8 December 2019 в 18:43
поделиться

Замаскированный входной плагин

jQuery(function($){   
    $("#paymentAmount").mask("9999.99");
});
6
ответ дан 8 December 2019 в 18:43
поделиться

События клавиатуры немного хитры, как предложено на документах jQuery.
http://unixpapa.com/js/key.html
http://yehudakatz.com/2007/07/03/event-normalization-in-jquery-113/

Трудность, которая касается Вас, является этим:

Идентификация ключей
При ловле события клавиатуры можно хотеть знать, какая клавиша была нажата. Если так, можно спрашивать слишком много. Это - очень большая путаница несовместимостей браузера и ошибок.
Из первой ссылки выше

Все равно в jQuery я сделал бы это:

textBoxElement.keydown( function( e ) {
    var chr = String.fromCharCode( e.which );
    if( !/[0-9.]/.test( chr ) ) {
        e.preventDefault();
    }
}

Это также отключит другие важные ключи, любят, вводят, снабжают вкладками, удаляют, таким образом, они должны быть добавлены в условное выражение. Не все другие ключи являются печатаемыми и так не могут быть regexed, таким образом, необходимо будет проверить на их e.keyCode. 13, 8 и т.д.

Если Вы не слишком побеспокоены о regex, Вы могли бы сделать что-то как

textBoxElement.keydown( function( e ) {
    switch( e.keyCode ) {
        case 48: //0
        case 49: //1
        case 50: //2
        case 51: //3
        case 52: //4
        case 53: //5
        case 54: //6
        case 55: //7
        case 56: //8
        case 57: //9
        case 48: //10
        case 37: //left
        case 39: //right
        case 8:  //tab
        case 13: //return
        case 46: //del
        case 190: //.
            return;
    }
    e.preventDefault();
});
1
ответ дан 8 December 2019 в 18:43
поделиться

Я не думаю, что существует любой такой легко доступный плагин. Проблема немного хитра, потому что необходимо позволить пользователю вводить некоторый вход прежде, чем применить regex. Таким образом, Вы не можете только соответствовать против каждого символа, поскольку он вводится, если Ваш regex просто не определяет ряд символов.

Для иллюстрирования если они вводят сумму платежа, и Вы хотите позволить числа и десятичные числа на односимвольной основе, что препятствует тому, чтобы они вошли 99.99.23.42492?

С другой стороны, если Вы предоставляете полный regex как /\d+\.\d{2}/, затем это не будет соответствовать вообще на отдельном символе, необходимо будет позволить им вводить некоторое количество символов прежде, чем попытаться применить regex и вытереть их вход, если это не соответствует. Это могло быть печально.

Если Вы действительно хотите отфильтровать вход, как они вводят, то Вы хотите позволить цифру для первого символа, то цифры или десятичное число для последующих символов до десятичного числа вводятся, и затем еще две цифры и затем более вход. Это не фильтр общего назначения.

Например, вот некоторый код, который сделает это, но это очень ужасно.

   myInput.keydown(function() {
       var text = this.val
       if(!/^\d/.test(text)) {
          return '';
       } else {
          done = text.match(/^(\d+\.\d\d)/);
          if (done) { return done[0]; }

          last_char = text.substr(text.length-1,1);
          decimal_count = text.replace(/[^\.]/g,'').length;

          if (decimal_count < 1) {
             if (!/[\d\.]/.test(last_char)) {
                return text.substr(0,text.length-1);
             }
          } else if (decimal_count == 1 && last_char == '.') {
             return text;
          } else {
             if (!/[\d]/.test(last_char)) {
                return text.substr(0,text.length-1);
             }
          }
          return text;
       }
    });

И конечно, это не будет работать, если они, окажется, будут вставлять в определенных значениях, не делая "реального" ввода.

Возможно, некоторый другой подход работал бы лучше на Вас? Как выделение поля и указание пользователю, если они вводят нецифру, недесятичное число, или если они вводят больше чем одно десятичное число, вместо того, чтобы фильтровать сам вход, потому что это кажется грязным.

1
ответ дан 8 December 2019 в 18:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: