문제

나는 하기 위한 암호화 사용자 이름과 비밀번호에서 JavaScript 를 사용하여 Jcryption 알고리즘이 있습니다.과 암호 해독을 사용하여 Java.그 과정에서 하기 전에 암호화 프로세스를 완료 JavaScript 양식이 제출됩니다.에서 자바의 이용을 제한하고 있으니 참고 암호화된 사용자 이름과 암호를 암호화합니다.고 나는 정상 값 그래서 나는 방 양식을 제출하고 작성된 코드에서 양식을 제출한 후에는 암호화 프로세스가 완료되 나는 호출하고 이벤트를 제출 하지만 양식을 제출합니다.나에게 제안하는 방법은 없를 해결하는 문제입니다.또는 다른 방법으로 해결하는 문제입니다.

사전에 감사합니다

나의 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();
    }
도움이 되었습니까?

해결책

$('form').submit(); 때문입니다.jquery submit () 메소드를 호출하기 때문에 연관된 제출 이벤트 처리기를 호출합니다. 재귀 적사이클

DOM 요소의 제출 () 메서드는 이벤트 핸들러 제출을 호출하지 않습니다.

$('form')[0].submit();
//or e.target.submit();
.

다른 팁

변경 submit 단추를 정상적인 버튼입니다.를 듣고 이 버튼을 클릭하면 안에는 핸들러를 통화 $('form').submit();

방법 당신이 하고 있는 현재는 것이 결과에 재귀 제출합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top