使用javascript触发表单提交

时间:2016-02-02 13:05:25

标签: javascript

我有一个表单,我想通过JavaScript提交。显然,这可以通过以下方式实现:

submit

问题是我在document.getElementById("myForm").addEventListener("submit", function(event) { event.preventDefault(); // Other work }); 事件上有一个听众,如下所示:

.submit()

当我呼叫 $fb = new Facebook([ 'app_id' => '00000000000', 'app_secret' => '000000000000', 'default_graph_version' => 'v2.5', ]); $fb->setDefaultAccessToken($_SESSION['facebook_access_token']); $request = $fb->request('GET', "/me/accounts", [], $_SESSION['facebook_access_token']); $response = $fb->getClient()->sendRequest($request); $body = $response->getDecodedBody(); 时,不会触发此事件处理程序。来自MDN

  

表单的onsubmit事件处理程序(例如,onsubmit =“return   false;“)从调用此方法时不会被触发   基于Gecko的应用程序。一般来说,不能保证   由HTML用户代理调用。

因此,考虑到这种限制,我如何以确保调用事件处理程序的方式提交表单?

2 个答案:

答案 0 :(得分:4)

您需要创建一个提交事件,然后发送它。

(function () {
              if ( typeof window.CustomEvent === "function" ) return false;

              function CustomEvent ( event, params ) {
                params = params || { bubbles: true, cancelable: true, detail: undefined };
                var evt = document.createEvent('submit');
                evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
                return evt;
               }

              CustomEvent.prototype = window.Event.prototype;

              window.CustomEvent = CustomEvent;

})();
var evt = new CustomEvent("submit", {"bubbles":true, "cancelable": true});
document.getElementById("myForm").addEventListener("submit",function(event) {
                event.preventDefault();
                alert('submit');
});

然后,当您想要提交此功能时,您需要致电:

!document.getElementById("myForm").dispatchEvent(evt);

有关更多活动信息,请参阅dispatchEvent.

答案 1 :(得分:-3)

使用jQuery提交表单并添加处理程序。



$("#myForm").on("submit", function(e){
  e.preventDefault();
  // Handle submission here
});

// Then later
$("#myForm").submit();