powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вопрос по маске ввода данных
2 сообщений из 2, страница 1 из 1
Вопрос по маске ввода данных
    #32727361
HiL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiL
Гость
Хотелось бы узнать, как можно сделать маску ввода данных.
Есть задача, нужно сделать маску вида __.__.____

ЗЫ. Если подскажите буду очень признателен.
...
Рейтинг: 0 / 0
Вопрос по маске ввода данных
    #32727590
Фотография Oleg Lugovskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
страница вызова скрипта
*******************
<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();
}
}
*******************
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вопрос по маске ввода данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]