Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос по маске ввода данных
|
|||
|---|---|---|---|
|
#18+
Хотелось бы узнать, как можно сделать маску ввода данных. Есть задача, нужно сделать маску вида __.__.____ ЗЫ. Если подскажите буду очень признателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2004, 10:25 |
|
||
|
Вопрос по маске ввода данных
|
|||
|---|---|---|---|
|
#18+
страница вызова скрипта ******************* <html> <body> <form id="form"> <input type=text id="mes" onKeyDown="return tbMask(this)" mask="99.99.9999" onFocus="return tbFocus(this)"> <script language="JavaScript" type="text/javascript" src="mask.js"> </script> </form> </body> </html> ***************** сам скрипт файл назвать mask.js ******************* var TAB_KEY = 9; var DELETE_KEY = 46; var BACKSPACE_KEY = 8; var ENTER_KEY = 13; var RIGHT_ARROW_KEY = 39; var DOWN_ARROW_KEY = 40; var UP_ARROW_KEY = 38; var LEFT_ARROW_KEY = 37; var HOME_KEY = 36; var END_KEY = 35; function tbMask(textBox) { var keyCode = event.keyCode; var keyCharacter = cleanKeyCode(keyCode); var retVal = false; // grab the mask var mask = textBox.mask; if(mask == null) mask = '9,99'; //alert(keyCode); switch(keyCode) { case BACKSPACE_KEY: var c = getCursorPos(textBox); if(c > 0) { var currentMaskChar; // get next available char to delete except literals while(c > 0) { c--; currentMaskChar = mask.charAt(c); if(currentMaskChar == '9' || currentMaskChar == 'X' || currentMaskChar == 'A') { // found a spot.....replace that char with '_' var x = textBox.value.substring(0,c); var y = textBox.value.substring(c+1,textBox.value.length); textBox.value = x + '_' + y; setCursorPos(textBox,c); textBox.curPos = c; break; } } } break; case TAB_KEY: // keep track of cursor b4 tabbing out of field var c = getCursorPos(textBox); textBox.curPos = c; retVal = true; break; case HOME_KEY: // just move/keep track of cursor setCursorPos(textBox,0); textBox.curPos = c; break; case END_KEY: // just move/keep track of cursor setCursorPos(textBox,textBox.value.length); textBox.curPos = textBox.value.length; break; case ENTER_KEY: retVal = true; break; case DELETE_KEY: var c = getCursorPos(textBox); if(c > -1) { var currentMaskChar = mask.charAt(c); // only allow delete if it's a valid char if(currentMaskChar == '9' || currentMaskChar == 'X' || currentMaskChar == 'A') { var x = textBox.value.substring(0,c); var y = textBox.value.substring(c+1,textBox.value.length); textBox.value = x + '_' + y; setCursorPos(textBox,c); textBox.curPos = c; } } break; case LEFT_ARROW_KEY: // just move/keep track of cursor var c = getCursorPos(textBox); if(c > 0) { setCursorPos(textBox,c-1); textBox.curPos = c-1; } break; case RIGHT_ARROW_KEY: // just move/keep track of cursor var c = getCursorPos(textBox); if(c < textBox.value.length) { setCursorPos(textBox,c+1); textBox.curPos = c+1; } break; default: // adding a new char somewhere in the field var c = getCursorPos(textBox); var currentMaskChar; // get next available to change.....except masking chars while(c < textBox.value.length) { currentMaskChar = mask.charAt(c); if(currentMaskChar == '9' || currentMaskChar == 'X' || currentMaskChar == 'A') break; c++; } switch(currentMaskChar) { case '9': // numeric only if('0123456789'.indexOf(keyCharacter) != -1) addNewKey(textBox,keyCharacter,c); break; case 'A': // alpha only if('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(keyCharacter) != -1) addNewKey(textBox,keyCharacter,c); break; case 'X': // alphanumeric if('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.indexOf(keyCharacter) != -1) addNewKey(textBox,keyCharacter,c); break; default: break; } } return retVal; } // -------------------------------------------------------------------- // Accept a TextBox, a keycharacter and an integer position // adds the key to the position and then sets cursor to next availble spot // -------------------------------------------------------------------- function addNewKey(tb,key,pos) { // add the new key to the textbox at pos var startSel = tb.value.substring(0,pos); var endSel = tb.value.substring(pos+1,tb.value.length); tb.value = startSel + key + endSel; // advance cursor to next '_' while(pos < tb.value.length) { curChar = tb.value.charAt(pos); if(curChar == '_') break; pos++; } setCursorPos(tb,pos); tb.curPos = pos; } // -------------------------------------------------------------------- // Loops thru pasted value and checks each char against the mask // // Leaves old value and return false if *any* char is off // Creates new masked value if all pasted data is ok // -------------------------------------------------------------------- function tbPaste(textBox) { // grab the textBox value and the mask var pastedVal = window.clipboardData.getData("Text"); var mask = textBox.mask; var newVal = ''; var curPastedVal = 0; for(var i=0;i<mask.length;i++) { var currentMaskChar = mask.charAt(i); // if current mask pos allows entry if(currentMaskChar == '9' || currentMaskChar == 'X' || currentMaskChar == 'A') { var currentPastedChar = pastedVal.charAt(curPastedVal); // check each current mask char against new keystroke // return false if any are out of sync if(currentMaskChar == '9') { if('0123456789'.indexOf(currentPastedChar) == -1) return false; } else if(currentMaskChar == 'A') { if('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(currentPastedChar) == -1) return false; } else if(currentMaskChar == 'X') { if('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.indexOf(currentPastedChar) == -1) return false; } else { return false; } // add new key newVal += currentPastedChar; curPastedVal++; } else { // add mask literal newVal += currentMaskChar; } } textBox.value = newVal; return false; } function tbFocus(textBox) { var val = textBox.value; var mask = textBox.mask; var startVal = ''; // give the tb a property set to current cursor pos. // used to set cursor pos when re-entering a tb. if(textBox.curPos == 'undefined' || textBox.curPos == null) textBox.curPos = -1; // if value null....set the starting format ie: '(___) ___-____' if(val.length == 0 || val == null) { for(var i = 0; i < mask.length; i++) { var c = mask.charAt(i); if(c == '9' || c == 'X' || c == 'A') { startVal += '_'; if(textBox.curPos == -1) textBox.curPos = i; } else { startVal += c; } } textBox.value = startVal; } if(textBox.curPos == -1) { textBox.curPos = textBox.value.length; } setCursorPos(textBox,textBox.curPos); textBox.maxlength = mask.length; return true; } function cleanKeyCode(key) { switch(key) { case 96: return "0"; break; case 97: return "1"; break; case 98: return "2"; break; case 99: return "3"; break; case 100: return "4"; break; case 101: return "5"; break; case 102: return "6"; break; case 103: return "7"; break; case 104: return "8"; break; case 105: return "9"; break; default: return String.fromCharCode(key); break; } } function getCursorPos(tb){ var sel, r1, r2, i=-1; if(document.selection && tb.createTextRange) { sel=document.selection; if(sel){ r2=sel.createRange(); r1=tb.createTextRange(); r1.setEndPoint("EndToStart", r2); i=r1.text.length; } } return i; } function setCursorPos(tb,pos) { if (tb.createTextRange) { var range = tb.createTextRange(); range.moveStart('character', pos); range.collapse(); range.select(); } } ******************* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2004, 11:44 |
|
||
|
|

start [/forum/topic.php?fid=18&tid=1395085]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
79ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 381ms |

| 0 / 0 |
