首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提交时的JQuery表单递归调用

提交时的JQuery表单递归调用
EN

Stack Overflow用户
提问于 2014-06-05 06:30:53
回答 2查看 1.5K关注 0票数 0

我正在用加密算法对JavaScript中的用户名和密码进行加密。以及使用Java解密。在此过程中,在提交JavaScript表单的加密过程完成之前,.In Java不会得到加密的用户名和密码。而且我得到了正常值,所以我被阻止表单提交和书面代码在表单提交后,加密过程完成,我调用提交事件,但表单提交多次。给我一些建议,有解决问题的方法吗?.or解决问题的其他方法。

提前谢谢

我的Html代码

代码语言:javascript
复制
    <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代码

代码语言:javascript
复制
    var keys='';

    function getKeys() {
        $.jCryption.getKeys("/sakai-login-tool/EncryptionServlet?generateKeypair=true", function(
            receivedKeys) {
            keys = receivedKeys;        

        });
    }
    getKeys();
    var encryptedUser='';
    var encryptedPassword='';   

/*表格提交代码*/

代码语言:javascript
复制
// $('#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();
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-05 06:32:51

这是因为$('form').submit();。由于您正在调用jQuery 提交()方法,因此它将调用关联的提交事件处理程序,从而导致递归循环。

将其更改为使用dom元素的提交()方法,这不会导致提交事件处理程序的调用。

代码语言:javascript
复制
$('form')[0].submit();
//or e.target.submit();
票数 2
EN

Stack Overflow用户

发布于 2014-06-05 06:36:30

submit按钮更改为普通按钮。侦听此按钮并在该处理程序调用$('form').submit();中单击

您目前所做的工作将导致递归提交。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24053111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档