Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Форма авторизации (https://javascript.ru/forum/jquery/28449-forma-avtorizacii.html)

4ex0V 20.05.2012 14:04

Форма авторизации
 
Здравствуйте!

Подскажите, пожалуйста, как правильно реализовать мою затею, заключающююся в следующем:

Есть форма входа - два поля login и password, и, соответственно, submit.

<form method="post" action="authorization.php">
     <div class="logReg">
          <input type="text" class="loginTextField" placeholder="LOGIN" name="login">
    	  <input type="password" class="passTextField" placeholder="PASSWORD" name="password">
          <input type="submit" class="enterButton" value="Enter">
     </div>
</form>


Кнопка submit изначально скрыта.
<script>
$(document).ready(function()
     {
          $(".enterButton").hide();
      });
</script>


Я хочу средствами jQuery добиться следующего:
если поля с логином и паролем не пустые, то опускается submit slideToggle.

cmd 20.05.2012 14:34

<form method="post" action="authorization.php">
     <div class="logReg">
          <input type="text" class="loginTextField" placeholder="LOGIN" name="login">
    	  <input type="password" class="passTextField" placeholder="PASSWORD" name="password">
          <input type="submit" class="enterButton" value="Enter">
     </div>
</form>

<script>
function checkLoginAndPassFields() {

   if ( $('.passTextField').val() && $('.loginTextField').val() ) {
       $('.enterButton').show();
   } else {
       $('.enterButton').hide();
   }
}

$('.loginTextField').change(function() {
  checkLoginAndPassFields();
});

$('.passTextField').change(function() {
  checkLoginAndPassFields();
});

$('.enterButton').hide();
</script>

tadjik1 20.05.2012 16:39

в jquery-стайле это будет так:

$('input').on('change', function() {
  checkLoginAndPassFields();
});


вообще говоря - не очень хороший тон играться с деревом, показывать и скрывать элементы. делайте лучше дизейбл.

tadjik1 20.05.2012 16:41

cmd,
в jquery селекторы можно указывать через запятую :)

$('.loginTextField, .passTextField').change(function() {
  checkLoginAndPassFields();
});

Deff 25.05.2012 03:57

4ex0V,
Задачка не оч продумана, -чел может сойти с формы не добив букв - дернулась мышь или отвлёкся...

Типовое: - Забыл пароль, полез за бумажкой набив первые буквоцифры по памяти

tadjik1 28.05.2012 13:47

nasqad,
чем плох вариант с function() {} ...? — правда не знаю, было бы интересно услышать мнение гуру.

по поводу change и keyup — не согласен с вами. я всегда использую чендж, это позволяет записывать в объект для отправки полную строку с логином и паролем, для чего проверять каждый символ и дергать функцию?

по поводу энтера, у меня умышленно не превентится это действие, т.к. очень многие пользователи привылки введя пароль нажимать на энтер, а не переводить мышку. не знаю насколько это кроссбраузерно, пишу только под совр хром и фф 8+. чендж, кстати, при этом отлично срабатывает :)

ну а функция on, позволяет повесить обработчик на элемент при появлении его в доме, поправьте, но по-моему
$('.loginTextField, .passTextField').keyup(checkLoginAndPassFields);
не справится с ситуацией, когда элементов еще нет в доме, а скрипт загружен.


Часовой пояс GMT +3, время: 21:42.