Введите ключ хук с HTML-формой - PullRequest
0 голосов
/ 12 марта 2011

Я реализовал форму в HTML:

<form id="loginForm" action="/?do=login" method="post" >
  <table width="50%" border="0">
    <tr>
      <td colspan="2">
        <span id="LoginErr"></span>
        <div>Login:</div>
        <input id="Login" type="text" maxlength="32" name="Login" value="{VAR %LOGIN}"/>
      </td>
    </tr>
    <tr>
      <td valign="bottom">
        <span id="PasswordErr"></span>
        <div>Passoword:</small></div>
        <input id="Password" type="password" maxlength="128" name="Password" value=""/>
      </td>
    </tr>
    <tr>
      <td>
        <a href="javascript:checkLogin()">Enter</a>
      </td>
    </tr>    
  </table>
</form>

Это функция проверки и отправки (с использованием jQuery):

function checkLogin() 
{
  var focused = false;    

  function report_error(field, err)
  {
    $('#' + field + 'Err').html(err);
    if (!focused) 
    {
      $('#' + field).focus();
      focused = true;
    }
  }

  $('#LoginErr').html('');
  $('#PasswordErr').html('');

  $login = jQuery.trim($('#Login').val());
  $password = jQuery.trim($('#Password').val());

  if ($login.length == 0)
    report_error('Login', 'The login field is empty!');

  if ($password.length == 0)
    report_error('Password', 'The password field is empty!');

  if (!focused) 
   $('#loginForm').submit();

} 

Но у меня проблемы с клавишей ввода.Когда я нажимаю эту форму ключа отправляется без моей проверки JavaScript.Мне нужно вызывать мою функцию, когда нажата клавиша ввода, и больше никаких действий.

Спасибо!

Обновление: правильный код: в тег формы нужно добавить: onSubmit="return checkLogin() в javascript if (!focused) $('#loginForm').submit(); нужно изменить на return !focused; Спасибо rdamborsky.

1 Ответ

1 голос
/ 12 марта 2011

использовать onSubmit событие формы:

$(function() {
    $('#loginForm').onSubmit = checkLogin;
});

Оно будет вызвано непосредственно перед тем, как данные вашей формы будут отправлены, независимо от того, что инициирует событие отправки (нажмите кнопку, нажав клавишу ввода в одном из полей ...)

...