2011-12-23 46 views
3

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

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()) }); 
}); 


}; 

回答

2

您可以控制通过调用提交按钮点击事件提交前发生了什么:

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

    alert("Encrypting..."); 
}); 

您也可以删除event.preventDefault();如果你想按钮像通常那样后采取行动已处理您的点击事件。如果你想要触发自己提交的事件,我建议使用event.preventDefault();

注:

我知道有在执行不同的事件(点击,变化等)的顺序的差异;例如同一复选框上的更改和点击事件会导致Firefox中的(单击,然后更改),或者(在Chrome中进行更改,然后单击)。如果按钮上的点击和提交事件也是如此,那么我建议使用preventDefault,以便您可以在表单准备好提交时触发提交。这样,它可以在任何浏览器工作

+0

我不知道id或提交按钮的名称,所以我不能使用$(#submit_button)。也在Facebook上只有第一个文本框有一个提交button.All其他文本框通过点击“输入”提交。感谢您的帮助。 – vkefallinos 2011-12-23 13:47:40

+0

那么有没有办法可以绕过上述问题? – vkefallinos 2011-12-23 14:55:27

+0

如果它们是通过回车提交的,那么仍然会附加一个'submit'处理程序,而不是按钮:)因此.submit()仍然会触发事件。 (请记住,您需要像触发$(“#id_of_form或.class_of_forms”)。submit();此外,您可以通过在DOM中挖掘找到该按钮:$(“body> div> form>输入[type = submit]“)(不是100%确定的语法,请检查Google,但这是基本的想法,也可以挖掘:$(”#id_of_element_inside“)。 - ) – Flater 2011-12-27 08:43:20

相关问题