I would like to overwrite the value of the “password” field before submiting a form on Jquery using AjaxSubmit function.
I know I can just update the value on the input field but, I don’t want the user to see this transformation. In other words, I just want to send a custom value to the password field and keep the current value on the screen…
How could I do that?
My current code:
var loginoptions = {
success: mySuccessFuction,
dataType: 'json'
}
$('#My_login_form').submit(function(e) {
e.preventDefault();
var pass=$("#My_login_form_password").val();
if (pass.length>0){
loginoptions.data={
password: ($.sha1($("#My_login_form_csrf").val()+$.sha1(pass)))
}
$("#My_login_form").ajaxSubmit(loginoptions);
delete loginoptions.data;
});
The problem with this code is that it is sending a “password” POST variable with the form field value and, a duplicated one with the value I set on “loginoptions.data”.
It seems that ajaxSubmit uses the serialize() function of jquery on the form and then, adds the extra data serialized too. So, if I have a field named “password” with the value “1234” and then try to change that to “abcd”, using “loginoptions.data.password”, it will serialize everything and put the “options.data” like this:
After many tries, I gave up on using ajaxSubmit function and decided to use ajax function to submit the form:
Here is the deserializeToObject() function: