如何在 onclick 提交之前更改表单元素值和操作 url

问题描述 投票:0回答:1

需要更新表单数据并在同一功能中 - 如果数据正确则提交。 UPD:一切正常,修正了拼写错误

onClick函数中的流程:

    从服务器获取数据并更新输入字段的值(我使用
  1. $.each( result.post_vals, function( entry, new_val ) {$('#' +entry).val(new_val);})
  2. 更新操作网址(我使用
  3. $('#form').attr('action', response.result.new_form_action_url)
  4. 提交表单,页面应该“重定向” - 使用我刚刚更新的数据打开支付网关页面。
我遇到了一个相当奇怪的行为 - 我应该只是通过

$('#' +entry).val(new_val)

 调用更新的值在表单 URL 更新时没有提交。

我尝试了多种方法玩了3天,但都失败了。

有什么想法吗?

代码(稍微简化)如下

// HTML

<form name="cart_form" id="cart_form" class="form-inline" method="post"> <input type="hidden" name="pp_biz_id" value=""> <input type="hidden" name="pp_user_guid" value=""> <input type="hidden" name="pp_parm1" value=""> <input type="hidden" name="orderid" value=""> ..... <input type="hidden" name="pp_doc_name" value=""> <input type="button" name="checkout" value="DO IT"> </form>

//JS

$(document).on('click','[name="checkout"]',function() { //e.preventDefault(); console.log('shopping_cart_save_addr') var form = $('#cart_form'); var pageData = form.serialize() console.log(pageData); $.ajax({ type: "POST", url: "get_data.php", data: pageData, dataType: 'json', success: function (response) { console.log(response); if (response.success) { if (response.result) { if (response.result.form_url) { $('#cart_form').attr('action', response.result.form_url); } if (response.result.html) { $('#result').html = response.result.html; } if (response.result.post_vals) { console.log(response.result.post_vals) $.each(response.result.post_vals, function (entry, new_val) { $('#' + entry).val(new_val); console.log(entry + ': ' + new_val); if (entry && new_val) { var el = document.getElementsByName(entry); if (el && new_val) { if (typeof new_val === 'string') { new_val = new_val.trim() } el[0].setAttribute('value', new_val); } } }); } } console.log($('#cart_form').serialize()) $('#cart_form').submit() } else { console.log(response); } if (response.result.html) { $('#result').html = response.result.html; } } );});});

问题:

    当我使用 onClick() 时,我无法在表单提交之前更新输入值。
  • 当我使用 onSubmit() 时,我无法在提交之前更新操作 url 或者我的调用在后台执行,这不是我的意图
//是的,看起来我阅读并尝试了这里的所有材料,包括

在提交之前更改表单的键名、值和操作网址

javascript html jquery ajax form-submit
1个回答
0
投票
愚蠢的问题,只是一些拼写错误......我修复了它,一切都开始正常运行

success: function(response) { console.log(response); if(response.success){ if(response.result){ if (response.result.form_url) { $('#cart_form').attr('action', response.result.form_url); } if (response.result.post_vals) { console.log(response.result.post_vals) $.each( response.result.post_vals, function( entry, new_val ) { $('#' +entry).val(new_val); console.log(entry + ': ' + new_val); if(entry && new_val) { var el = document.getElementsByName(entry); if(el && new_val) { if (typeof new_val === 'string') { new_val = new_val.trim() } el[0].setAttribute('value', new_val); } } }); } } console.log($('#cart_form').serialize()) $('#cart_form').submit() } if (response.result.html) { $('#result').html = response.result.html; } }
    
© www.soinside.com 2019 - 2024. All rights reserved.