在提交表单之前更改数据

时间:2011-12-23 13:25:35

标签: javascript jquery facebook forms greasemonkey

我希望能够在facebook中提交表单之前加密文本框中的文本。我尝试使用beforeSerialize或beforeSubmit的ajaxFORM插件但加密没有发生。在后面的代码中,加密功能被替换为alert for debugging目的。在我运行脚本之后立即发出警报,而不是当我按下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()) } ); 
});


};

1 个答案:

答案 0 :(得分:2)

您可以通过在提交按钮上调用click事件来控制提交之前发生的事情:

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

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

如果您希望按钮按照处理点击事件后的正常操作,您也可以删除event.preventDefault();。如果您想自己触发提交活动,我建议您使用event.preventDefault();

注意:

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