Javascript 在提交表单之前更改数据

Javascript 在提交表单之前更改数据,javascript,jquery,facebook,forms,greasemonkey,Javascript,Jquery,Facebook,Forms,Greasemonkey,在facebook中提交表单之前,我希望能够对文本框中的文本进行加密。我尝试了使用beforeSerialize或beforeSubmit的ajaxFORM插件,但加密没有发生。出于调试目的,加密函数后面的代码中会替换为警报。警报在我运行脚本后立即出现,而不是在我按下按钮时出现facebook上的submit按钮。当我按下submit按钮时,它会要求刷新页面,我不想这样 var s = document.createElement('script'); s.setAttribute('src',

在facebook中提交表单之前,我希望能够对文本框中的文本进行加密。我尝试了使用beforeSerialize或beforeSubmit的ajaxFORM插件,但加密没有发生。出于调试目的,加密函数后面的代码中会替换为警报。警报在我运行脚本后立即出现,而不是在我按下按钮时出现facebook上的submit按钮。当我按下submit按钮时,它会要求刷新页面,我不想这样

var s = document.createElement('script');
s.setAttribute('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js');
document.body.appendChild(s);


var f = document.createElement('script');
f.setAttribute('src', 'http://malsup.github.com/jquery.form.js');
document.body.appendChild(f);

var c = document.createElement('script');
c.setAttribute('src', 'http://malsup.github.com/chili-1.7.pack.js');
document.body.appendChild(c);



s.onload=function(){


$(document).ready(function() { 
    // bind form using ajaxForm 
    $(document.activeElement).closest("form").ajaxForm( { 
    beforeSerialize:         alert($(document.activeElement).val()) } ); 
});


};

您可以通过调用submit按钮上的click事件来控制提交前的操作:

$("#submit_button").click(function(event) {
    event.preventDefault();

    alert("Encrypting...");
});
您还可以删除
事件.preventDefault()如果您希望按钮在处理您的单击事件后正常工作。如果您想自己触发提交事件,我建议使用
event.preventDefault()

注:


我知道执行不同事件的顺序不同(单击、更改等);e、 g.同一复选框上的更改和单击事件会导致Firefox中的(单击,然后更改),或Chrome中的(更改,然后单击)。如果按钮上的click and submit事件也是如此,我建议使用
preventDefault
,以便在表单准备好提交时触发提交。这样,它可以在任何浏览器中运行

我不知道提交按钮的id或名称,所以我不能使用$(#提交按钮)。同样在facebook中,只有第一个文本框有一个提交按钮。所有其他文本框都是通过点击“回车”提交的。谢谢你的帮助。那么有没有办法绕过上述问题?如果是通过回车提交的,仍然有一个“提交”处理程序附加到它,而不是按钮:)因此,.submit()仍将触发该事件。(请记住,您需要像$(“#id_of_form”或.class_of_forms”)一样触发它。submit();此外,您可以通过在DOM中挖掘找到按钮:$(“body>div>form>input[type=submit]”)(语法不是100%确定,请检查Google,但这是基本思想。您还可以挖掘:$(“#id_of_of_element_inside in”)。parent()。parent()例如:-)