Показать сообщение отдельно

  #437  
Старый 07.04.2008, 15:38
astrologer
Постоянный
Регистрация: 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>
 
Ответить с цитированием