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

Run tracking code after validation but before submit

本文关键字:运行 跟踪 代码 提交 验证 之后      更新时间:2023-09-26

有形式。验证函数附加到提交事件,它返回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...
})

您应该使用以下代码

$(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 });

我已经使用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);
})