如何判断是否已提交HTTP表单?

时间:2015-07-07 05:36:40

标签: javascript jquery html angularjs forms

让我们使用一个简单的小型请愿表,旨在无辜地收集数十亿的密码:

<form action="/Petition/Sign" method="post">
    <input class="form-control password" id="Password" name="Password" type="password">
    <button type="submit" class="btn loginBtn">Sign</button>
</form>

我想在这个视图中用JavaScript代码(尽可能使用Angular-esque)发出信号,当一个成功的帖子因任何原因发生时,最显而易见的是&#39; Sign&#39;单击按钮,但这甚至只是我想要结束的事件的开始。

我能想到的最简单的方法是在按钮的ngClick事件中创建并清除隐藏的输入,然后轮询一个固定的超时,直到该输入的值是一个始终预期的常量值从POST请求返回。

注意:这是大量此类形式的一个很小的例子,转换然后所有使用带有信号完成的Ajax调用仅在可行的非常偏远的一侧,并且远离理想。与我提出的其他问题不同,我没有兴趣直接衡量电话的成功。

1 个答案:

答案 0 :(得分:1)

以纯粹的javascript方式 -

var ele = [Your Form Element];
if(ele.addEventListener){
    ele.addEventListener("submit", callback, false);  //Modern browsers
}else if(ele.attachEvent){
    ele.attachEvent('onsubmit', callback);            //Old IE
}

在jquery -

  $(element).submit(function(){
      console.log('submitted);
});

而在AngularJs -

为此目的有ng-submit指令。https://docs.angularjs.org/api/ng/directive/ngSubmit

<form ng-submit="callback()">
控制器中的

$scope.callback = function(){ /*...*/ };

也请阅读 - How can I listen to the form submit event in javascript?