2015-06-03 2 views
2

У меня есть форма для входа в систему, и я хочу, чтобы поля были необходимы, поэтому пустые поля не будут отфильтрованы.если требуется атрибут пустой поля

Проблема заключается в поле пароля, если я его требую, функция javascript очистит его, и он не будет отфильтрован (в поле появятся необходимые сообщения).

Функция JS создает другое скрытое поле и помещает туда хэшированный пароль, тогда поле пароля должно быть опустошено (password.value = "";).

Я думаю об использовании jquery attr(), если он пуст.

function formhash(form, password) { 
    if (password.value = "") { 
     password.attr("required", true); // somehow this is not working... 
    } 

    // Create a new element input, this will be our hashed password field. 
    var p = document.createElement("input"); 

    // Add the new element to our form. 
    form.appendChild(p); 
    p.name = "password"; 
    p.type = "hidden"; 
    p.value = hex_sha512(password.value); 

    // Make sure the plaintext password doesn't get sent. 
    password.value = ""; 

    // Finally submit the form. 
    form.submit(); 
} 

В чем проблема? Нужно ли мне возвращаться или что-то еще?

Как насчет других функций, таких как регистрация и смена пароля? Как упростить так много, если?

ответ

2

Необходимо использовать обработчик события onsubmit формы вместо обработчика onclick, поскольку флаг required не останавливает событие клика от увольнения.

Затем следует подключить обработчик событий в сценарии вместо инлайн и ...

  1. Предотвратить форма от представления
  2. Затем хэш значение пароля.
  3. Затем повторно форме

// Get the form element 
var form = document.getElementById('login'); 

// Attach the submit event handler to the form element 
form.onsubmit = function (e) { 
    // Stop initial submission event 
    e.preventDefault(); 

    // Get the password element 
    var password = document.getElementById('password'); 

    // Update the password element's value with a hashed value 
    password.value = hex_sha512(password.value); 

    // Resubmit the form 
    this.submit(); 
} 
+0

Ну, все мои JavaScripts включены с помощью HTML в тегах головы, так что я нужен этот обработчик window.onload. Спасибо за помощь! :) –

+0

Хммм, да, верно. Спасибо за помощь! :) –

Смежные вопросы