在使用jQuery提交之前更改表单POST数据不起作用

时间:2019-06-12 12:23:16

标签: javascript php jquery html

我当前正在尝试在表单提交期间更改表单中隐藏输入的值。所以首先我要隐藏输入:

<input autocomplete="off" class="um-form-field valid not-required " type="text" name="webauthn_result-320" id="webauthn_result-320" value="" placeholder="" data-validate="" data-key="webauthn_result">

现在我正在使用此功能在提交表单之前做一些事情。为了将结果传递到后端,我想修改表单,以便可以在PHP中使用$_POST来访问它们:

jQuery(document).on('submit', '#login-form', function () {
    var someVarialbel = 20;
    jQuery('input[data-key=webauthn_result]').val(['success', someVarialbel]);
});

可悲的是,它不起作用。我检查了后端,该值为空。知道怎么了吗?

3 个答案:

答案 0 :(得分:2)

尝试这样的事情。

  

您将需要使用preventDefault进行任何更改。

$("#form_id").on("submit", function (e) {
    e.preventDefault();//stop submit event
    var self = $(this);//this form
    $("#change_value").val("deneme");//change input
    $("#form_id").off("submit");//need form submit event off.
    self.unbind('submit');
    self.submit();//submit form
});

答案 1 :(得分:0)

来自jQuery文档:Here is the link

  

例如,考虑HTML:

<form id="target" action="destination.html">
  <input type="text" value="Hello there">
  <input type="submit" value="Go">
</form>
<div id="other">
  Trigger the handler
</div>
     

事件处理程序可以绑定到以下形式:

$( "#target" ).submit(function( event ) {
  alert( "Handler for .submit() called." );
  event.preventDefault();
});
     

现在,提交表单后,将提醒该消息。这是在实际提交之前发生的,因此我们可以通过在事件对象上调用.preventDefault()或从处理程序中返回false来取消提交操作。单击另一个元素时,我们可以手动触发事件:

答案 2 :(得分:0)

您可以按以下格式以JSON格式设置值:

jQuery(document).on('submit', '#login-form', function () {
    var someVarialbel = 20;
    jQuery('input[data-key=webauthn_result]').val(JSON.stringify(['success', someVarialbel]));
});

希望它对您有帮助!