jQuery замаскировал входной плагин. выберите все содержание, когда текстовое поле получит фокус

Что делает этот код, так это проверяет, объявил ли класс, который был установлен как impl (SocketImpl), сам метод connect(SocketAddress a, int b) (не наследуется).

Если у него нет этого метода, getDeclaredMethod выдает NoSuchMethodException. Это исключение преобразуется в PrivilegedActionException по PrivilegedExceptionAction.

Таким образом, если метод не существует, этот код устанавливает флаг oldImpl в значение true. Этот флаг позже используется для принятия некоторых решений.

Чтобы ответить на ваш вопрос более прямо:

  • oldImpl не относится к предыдущему значению impl - вместо этого это флаг boolean, который указывает, является ли текущее значение impl является «старым» (потому что у него нет определенного метода)
10
задан Community 23 May 2017 в 12:19
поделиться

5 ответов

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

7
ответ дан 3 December 2019 в 23:15
поделиться

Эй Jon, не слишком уверенный в производительности этого, но это должно работать:

    $(function() {


        // Contents of textboxes will be selected when receiving focus.
        $("input[type=text]")
            .focus(function() {
                var mask = "99/99/9999";
                $(this).unmask(mask).select().mask(mask);
            });
    });
3
ответ дан 3 December 2019 в 23:15
поделиться

его работа для меня в FF3.

$("input[type=text]").focus(function(e) {
  var that = this;
  setTimeout(function(){$(that).select();},10);
  return false;
});

setTimeout "поставит выбор в очередь" () выполнение, я задавался вопросом о: - хорошо функции маски делают Вашу работу ЗАТЕМ, я выберу содержание. Это ЗАТЕМ - то, где очередь полезна.

Просто идея. Я надеюсь, что это работает как ожидалось.

3
ответ дан 3 December 2019 в 23:15
поделиться

Проблема

Значение Defaut удаляется при фокусе

Решение : добавлен небольшой код исправления в файл mask.js (jquery.maskedinput-1.2.2.min.js)

(function(a){var c=(a.browser.msie?"paste":"input")+".mask";var b=(window.orientation!=undefined);a.mask={definitions:{"9":"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"}};a.fn.extend({caret:function(e,f){if(this.length==0){return}if(typeof e=="number"){f=(typeof f=="number")?f:e;return this.each(function(){if(this.setSelectionRange){this.focus();this.setSelectionRange(e,f)}else{if(this.createTextRange){var g=this.createTextRange();g.collapse(true);g.moveEnd("character",f);g.moveStart("character",e);g.select()}}})}else{if(this[0].setSelectionRange){e=this[0].selectionStart;f=this[0].selectionEnd}else{if(document.selection&&document.selection.createRange){var d=document.selection.createRange();e=0-d.duplicate().moveStart("character",-100000);f=e+d.text.length}}return{begin:e,end:f}}},unmask:function(){return this.trigger("unmask")},mask:function(j,d){if(!j&&this.length>0){var f=a(this[0]);var g=f.data("tests");return a.map(f.data("buffer"),function(l,m){return g[m]?l:null}).join("")}d=a.extend({placeholder:"_",completed:null},d);var k=a.mask.definitions;var g=[];var e=j.length;var i=null;var h=j.length;a.each(j.split(""),function(m,l){if(l=="?"){h--;e=m}else{if(k[l]){g.push(new RegExp(k[l]));if(i==null){i=g.length-1}}else{g.push(null)}}});return this.each(function(){var ORJ=$(this).val();var r=a(this);var m=a.map(j.split(""),function(x,y){if(x!="?"){return k[x]?d.placeholder:x}});var n=false;var q=r.val();r.data("buffer",m).data("tests",g);function v(x){while(++x<=h&&!g[x]){}return x}function t(x){while(!g[x]&&--x>=0){}for(var y=x;y<h;y++){if(g[y]){m[y]=d.placeholder;var z=v(y);if(z<h&&g[y].test(m[z])){m[y]=m[z]}else{break}}}s();r.caret(Math.max(i,x))}function u(y){for(var A=y,z=d.placeholder;A<h;A++){if(g[A]){var B=v(A);var x=m[A];m[A]=z;if(B<h&&g[B].test(x)){z=x}else{break}}}}function l(y){var x=a(this).caret();var z=y.keyCode;n=(z<16||(z>16&&z<32)||(z>32&&z<41));if((x.begin-x.end)!=0&&(!n||z==8||z==46)){w(x.begin,x.end)}if(z==8||z==46||(b&&z==127)){t(x.begin+(z==46?0:-1));return false}else{if(z==27){r.val(q);r.caret(0,p());return false}}}function o(B){if(n){n=false;return(B.keyCode==8)?false:null}B=B||window.event;var C=B.charCode||B.keyCode||B.which;var z=a(this).caret();if(B.ctrlKey||B.altKey||B.metaKey){return true}else{if((C>=32&&C<=125)||C>186){var x=v(z.begin-1);if(x<h){var A=String.fromCharCode(C);if(g[x].test(A)){u(x);m[x]=A;s();var y=v(x);a(this).caret(y);if(d.completed&&y==h){d.completed.call(r)}}}}}return false}function w(x,y){for(var z=x;z<y&&z<h;z++){if(g[z]){m[z]=d.placeholder}}}function s(){return r.val(m.join("")).val()}function p(y){var z=r.val();var C=-1;for(var B=0,x=0;B<h;B++){if(g[B]){m[B]=d.placeholder;while(x++<z.length){var A=z.charAt(x-1);if(g[B].test(A)){m[B]=A;C=B;break}}if(x>z.length){break}}else{if(m[B]==z[x]&&B!=e){x++;C=B}}}if(!y&&C+1<e){r.val(ORJ);w(ORJ.length,h)}else{if(y||C+1>=e){s();if(!y){r.val(r.val().substring(0,C+1))}}}return(e?B:i)}if(!r.attr("readonly")){r.one("unmask",function(){r.unbind(".mask").removeData("buffer").removeData("tests")}).bind("focus.mask",function(){q=r.val();var x=p();s();setTimeout(function(){if(x==j.length){r.caret(0,x)}else{r.caret(x)}},0)}).bind("blur.mask",function(){p();if(r.val()!=q){r.change()}}).bind("keydown.mask",l).bind("keypress.mask",o).bind(c,function(){setTimeout(function(){r.caret(p(true))},0)})}p()})}})})(jQuery);
1
ответ дан 3 December 2019 в 23:15
поделиться

, если ваша «завершенная» функция не работает, попробуйте заменить эту строку:

if (settings.completed && next == len)

(это строка номер 169 несжатого плагина) с этим:

if (settings.completed && eval (+ next - 1) == len)

При использовании этого плагина с firebug я заметил, что переменная next выскакивает через символ при вводе последнего символа маски. Этот способ должен работать.

0
ответ дан 3 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

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