验证后但在提交之前运行跟踪代码

时间:2014-07-04 09:29:23

标签: javascript jquery forms validation

有形式。验证函数附加到提交事件,它返回true / false($(form).submit(...))。

<form name="f" class="form">
<input type=text name=ff>
</form>

$(".form").submit(function() {
  if ($("[name='ff']").val()==="") {
    return false
  }
  return true;
})

我们希望运行一些必须执行的跟踪脚本,以防验证返回true但不更改原始验证功能(我们有可能从界面启用/禁用跟踪脚本)

  var _this = this;
  ga('send', 'pageview', 'la-la-la', {
    'hitCallback': function() {
        jQuery(_this).parents('form').first().submit();
    }
  })
  return !window.ga;

我该如何正确地做到这一点?

到目前为止,我想取消绑定当前的提交/验证函数并绑定我的函数,并在其内部执行验证逻辑,然后运行我的跟踪代码。通过这种方式,我可以轻松禁用/启用跟踪代码,而不会中断逻辑的原始行为。

但是我在这方面遇到了问题。请指教。我想做那样的事情

var fn = $(.form).submit // get attached logic - and that's does not work
$(.form).unbind('submit') // unbind it from submit
$(.form).submit(function() { // attach my code and reuse old code inside
  my code...
  if (fn()===true) {
    my code...
  }
  my code...
})

2 个答案:

答案 0 :(得分:0)

您应使用以下代码

$(form).on("submit", function(f){ //your function here. lets say you add a counter that starts from 0 and your validation functon returns its count. then you would say if (counter != 0){ f.preventDefault(); } //this would stop the form from submitting until a condition on your function is met });

答案 1 :(得分:0)

我使用hitCallback事件制作了解决方案

jQuery(".register-form").on("valid", function(f) {
  var event = "/signup";

  var _this = this;
  ga('send', 'pageview', event, {
    'hitCallback': function() {
      _this.submit();
    }
  })
  return !(ga.hasOwnProperty('loaded') && ga.loaded === true);
})