自动提交时没有数据

时间:2017-03-31 17:40:35

标签: javascript php

我有以下内容:

<form action=\"http://example.co.uk/order\" method=\"post\" id=\"vouchertwo\" >
  <input type=\"hidden\" id=\"discount_name\" name=\"discount_name\" value=\"123549\">
  <input type=\"hidden\" name=\"submitDiscount\">
  <button type=\"submit\" name=\"submitAddDiscount\" class=\"button btn btn-default button-small\"><span>OK</span></button>
  </fieldset>
</form>

目前正在php(因此)中运行。

如果我点击&#34;确定&#34;手动按钮,凭证代码123549将传递到购物车并应用。

但是,如果我使用:

<script>
window.onload = function(){

document.getElementById(\"vouchertwo\").submit();
}
</script>

触发表单,没有传递任何值。

我缺少什么想法?

1 个答案:

答案 0 :(得分:0)

按原样使用表单,在表单外添加一个按钮,以编程方式测试提交,工作正常。斜杠引发了各种各样的问题,但这就是你的PHP ......

当然,如果没有将表单实际提交到某个地方,我们会收到一个奇怪的错误。作为示例,我已经为表单上的提交函数创建了一个事件监听器。单击表单的按钮时,会触发form.submit,但是当我调用form.submit()时,它不会。一个小问题,但值得注意。

&#13;
&#13;
/***
 * Created a dummy button that, when clicked,
 *   submits the full form.
 ***/
var myDummyButton = document.getElementById("dummyBtn");
var myForm = document.getElementById("vouchertwo");

myDummyButton.addEventListener("click", function(evt){
  evt.preventDefault();
  document.getElementById("vouchertwo").submit();
})

myForm.addEventListener("submit", function(evt){
  evt.preventDefault();
  console.log(this);
})
&#13;
<form action="#" method="post" id="vouchertwo">
  <input type="hidden" id="discount_name" name="discount_name" value="123549">
  <input type="hidden" name="submitDiscount">
  <button type="submit" name="submitAddDiscount" class="button btn btn-default button-small"><span>OK</span></button>
</form>

<input type="button" id="dummyBtn" value="Do it!" />
&#13;
&#13;
&#13;

现在,有一种方法可以让两个函数运行相同的功能:而不是使用form.submit(),使用formElement.submitButtonElement.click()。通过这样做,两种方法实际上都会触发表单的提交监听器。看看这个选项:

&#13;
&#13;
/***
 * Created a dummy button that, when clicked,
 *   submits the full form.
 ***/
var myDummyButton = document.getElementById("dummyBtn");
var myForm = document.getElementById("vouchertwo");

myDummyButton.addEventListener("click", function(evt){
  evt.preventDefault();
  document.querySelector("#vouchertwo button").click();
})

myForm.addEventListener("submit", function(evt){
  evt.preventDefault();
  console.log(this.querySelector("#discount_name").value );
})
&#13;
<form action="#" method="post" id="vouchertwo">
  <input type="hidden" id="discount_name" name="discount_name" value="123549">
  <input type="hidden" name="submitDiscount">
  <button type="submit" name="submitAddDiscount" class="button btn btn-default button-small"><span>OK</span></button>
</form>

<input type="button" id="dummyBtn" value="Do it!" />
&#13;
&#13;
&#13;