понедельник, 22 декабря 2008 г.

JavaScript dFilter для MAC-адресов

Чуток доработал dFilter для работы с полями ввода MAC-адресов (маска теперь заточена под HEX). Кроме того, теперь фильтр работает корректно с цифровой клавиатурой. Может, кому-нибудь пригодится. Да и сам не забуду :)
Меняем всю функцию dFilter:
function dFilter (key, textbox, dFilterMask)
{
if (key > 95) key = key-48;
        dFilterNum = dFilterStrip(textbox.value, dFilterMask);
       
        if (key==9)
        {
            return true;
        }
        else if (key==8&&dFilterNum.length!=0)
        {
                  dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
        }
       else if ( ((key>47&&key<58)||(key>95&&key<106)||(key>64&&key<71)) && dFilterNum.length<dFilterMax(dFilterMask) )
        {
        dFilterNum=dFilterNum+String.fromCharCode(key);
        }

        var dFilterFinal='';
    for (dFilterStep = 0; dFilterStep < dFilterMask.length; dFilterStep++)
        {
        if (dFilterMask.charAt(dFilterStep)=='#')
                {
                      if (dFilterNum.length!=0)
                      {
                        dFilterFinal = dFilterFinal + dFilterNum.charAt(0);
                          dFilterNum = dFilterNum.substring(1,dFilterNum.length);
                      }
                    else
                    {
                        dFilterFinal = dFilterFinal + "";
                    }
                }
                 else if (dFilterMask.charAt(dFilterStep)!='#')
                {
                    dFilterFinal = dFilterFinal + dFilterMask.charAt(dFilterStep);            
                }
        }


        textbox.value = dFilterFinal;
    return false;
}

P.S. Цеплять jQuery + плагин масок не захотел.

Комментариев нет: