Вопрос

Я делаю шифрование для имени пользователя и пароля в 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();

То, как вы делаете в настоящее время, приведут к рекурсивным представлениям.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top