
07.04.2008, 15:38
|
|
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме: 3069349
Репутация:
808
|
|
Мой вариант %)
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Пример.</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style type="text/css">
input.err,
textarea.err
{
border: red dashed 2px;
}
input, textarea
{
font-family: "Courier New";
margin-bottom: 10px;
}
pre
{
margin: 0;
}
</style>
<script type="text/javascript">
var Forms =
{
onsubmit: function(e)
{
if(!e) e = window.event;
var node = e.target || e.srcElement;
if(!Forms.validate(node))
{
e.returnValue = false;
if(e.preventDefault) e.preventDefault();
}
},
onkeypress: function(e)
{
if(!e) e = window.event;
var node = e.target || e.srcElement,
key = e.charCode || e.keyCode,
exp = node.getAttribute('regex'),
str = String.fromCharCode(key);
if(!(key < 32 || e.ctrlKey || e.altKey) && !Forms.test(str, exp))
{
Forms.notify(node);
e.returnValue = false;
if(e.preventDefault) e.preventDefault();
}
},
validate: function(node)
{
var valid = true;
for(i = 0;i<node.length;i++)
{
if(!Forms.check(node[i]))
{
Forms.notify(node[i]);
valid = false;
}
}
return valid;
},
check: function(node)
{
var r;
if((r = node.getAttribute('regex')) == undefined) return true;
return (Forms.test(node.value, r) ? true : (Forms.notify(node), false));
},
test: function(str, exp)
{
return (new RegExp(exp)).test(str);
},
notify: function(node)
{
var c = node.className;
if(c != 'err')
{
node.className = 'err';
setTimeout(function()
{
node.className = c;
}, 1500);
}
},
init: function()
{
var f = document.forms, i = f.length;
while(i--)
{
addEvent(f[i], 'submit', Forms.onsubmit);
addEvent(f[i], 'keypress', Forms.onkeypress);
}
}
};
function addEvent(o, e, f)
{
if(o.addEventListener)
{
o.addEventListener(e, f, false);
}
else if(o.attachEvent)
{
var on = 'on' + e;
o.attachEvent(on, f)
}
};
addEvent(window, 'load', Forms.init);
</script>
</head>
<body>
<div>
<form action="javascript:alert('#1')">
<pre>[A-Z0-9]+</pre>
<input name="uan" type="text" regex="[A-Z0-9]+" value="">
<pre>[0-9]+</pre>
<input name="an" type="text" regex="[0-9]+" value=""><br>
<input name="run" type="submit" value="Отправить">
</form>
</div>
<div>
<form action="javascript:alert('#2')">
<pre>[A-Z0-9]+</pre>
<input name="uan" type="text" regex="[A-Z0-9]+" value="">
<pre>[a-zA-Z0-9]+</pre>
<input name="an" type="text" regex="[a-zA-Z0-9]+" value="">
<pre>[a-z]+</pre>
<input name="a" type="text" regex="[a-z]+" value="">
<pre>^[\w\ ]*$</pre>
<textarea name="txt" regex="^[\w\ ]*$" cols="20" rows="5"></textarea><br>
<input name="run" type="submit" value="Отправить">
</form>
</div>
</body>
</html>
|
|
|