Форма jQuery по объявлению рекурсивно
-
21-12-2019 - |
Вопрос
Я делаю шифрование для имени пользователя и пароля в JavaScript с помощью алгоритма jcryptic.и дешифрование с использованием Java.В этом процессе до завершения процесса шифрования в форме JavaScript представлены .in Java, я не зашифровал имя пользователя и пароли.И я получаю нормальные значения, поэтому я предотвращает отправку формы и письменного кода в форме отправки после завершения процесса шифрования, я вызывающую событие, но формулирует несколько раз. Дайте мне предложения, есть ли способ решить проблемы .or любой альтернативный способ решить проблемы.
Спасибо заранее
Мой HTML-код
<form name="frm" method="post" action="/xsl-portal/xlogin" onSubmit="" target="_parent" autocomplete="off">
<input type="text" maxlength="45" name="eid1" id="eid1" />
<input type="hidden" maxlength="45" id="eid" name="eid" />
<input type="password" id="pw" name="pw" />
<input type="image" src="home-images/button-submit.png" id="submitButton" value="Submit" name="image" onclick="submitButtonClick();" />
<input type="hidden" value="" name="submit" id="submit"/>
</form>
.
.Javascript code
var keys='';
function getKeys() {
$.jCryption.getKeys("/sakai-login-tool/EncryptionServlet?generateKeypair=true", function(
receivedKeys) {
keys = receivedKeys;
});
}
getKeys();
var encryptedUser='';
var encryptedPassword='';
.
/ * Форма Отправить код * /
// $('#submitButton').on('click',function(){
function submitButtonClick(){
}
// });
$('form').submit(function(e) {
e.preventDefault();
var user=$('#eid1').val();
var password=$('#pw').val();
encryptionProcess(user,password).pipe(applyValues).pipe(function(){
console.log("eid"+$('#eid').val());
console.log("pw"+$('#pw').val());
$('form').submit();
});
})
;
function encryptionProcess(user,password){
var d= $.Deferred();
setTimeout(function() {
$.jCryption.encrypt(user, keys, function(encrypted) {
encryptedUser = encrypted;
console.log("printing user encryption:"+encryptedUser);
});
$.jCryption.encrypt(password, keys, function(encryptedPasswd) {
encryptedPassword = encryptedPasswd; /**
* As both userName and password are encrypted now Submit login
*/
console.log("printing password encryption:"+encryptedPassword);
});
d.resolve();
}, 10);
return d.promise();
}
function applyValues(){
var d1= $.Deferred();
setTimeout(function() {
$('#eid').val(encryptedUser);
$('#pw').val(encryptedPassword);
d1.resolve();
}, 10);
return d1.promise();
}
. Решение
Это из-за генеракодицетагкода.Поскольку вы называете jQuery Отправить () Метод, он позвонит соответствующему обработчику событий, вызывая рекурсивныйцикл
Измените его в использовании элемента DOM Отправить () Метод, который не приведет к выводу представленные обработчики событий.
$('form')[0].submit();
//or e.target.submit();
. Другие советы
Измените кнопку submit
, чтобы быть нормальной кнопкой.Слушайте нажатие на эту кнопку и в этом обработке Call $('form').submit();
То, как вы делаете в настоящее время, приведут к рекурсивным представлениям.