Проблема фокуса javascript / jquery в IE8 и до - PullRequest
0 голосов
/ 08 августа 2011

У меня небольшая проблема.

В настоящее время у меня есть следующая функция для форматирования валюты на фокусе / размытости входного текстового поля:

jsfiddle

    $('.number').bind({
        focus: function() {
            $(this).val('$' + $(this).val());
        },
        blur: function() {
            var defVal = $(this)[0].defaultValue; 
            var dollars = $(this).val();
            dollars = dollars.replace('$', '');
            dollars = dollars.replace(',', '');
            dollars = parseFloat(dollars).toFixed(2);
            if (!(isNaN(dollars))) {
            $(this).val(dollars);
            } else {$(this).val(defVal).removeClass('inpt_validBlur');};
        }
    });

Thisработает так же, как нужно в Firefox, Safari и IE9, но в предыдущих версиях IE есть проблема.в IE, когда вы начинаете печатать, ваш текст появляется ДО знака доллара, а не после.Кто-нибудь знает причину этого и как обойти это?

Спасибо

1 Ответ

0 голосов
/ 11 августа 2011

это, кажется, работает для меня.Не идеально, и мне не очень нравится смешивать javascript и jquery, но это работает.

 $('.inpt').focus(function() {
        var dollars = $(this).val();
        var defVal = $(this)[0].defaultValue;
        $(this).removeClass('inpt').addClass('inpt_Focus');
        if ($(this).val() === defVal || $(this).val() === '$') {
            $(this).val('');
        }
        if ($(this).hasClass('number')) {
            $(this).val('$' + $(this).val());
            var elemLen = $(this).length;
            if (document.selection) {
                var oSel = document.selection.createRange();
                oSel.moveStart('character', -elemLen);
                oSel.moveStart('character', elemLen);
                oSel.moveEnd('character', 0);
                oSel.select();
            }
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...