未捕获的TypeError不是函数

时间:2017-02-23 19:03:03

标签: javascript jquery

我有一个表单,我试图通过ajax提交,我有一些我不明白的问题。

所以我在main.js的顶部定义了以下函数:

function formSubmit() {
  var valid = true;
  $(this).find('input, select, textarea').each(function(index, el) {
    if(valid)
    {
      if($(el).is(':hidden'))
      {
        $(el).removeAttr('required');
      }
      if(!el.checkValidity())
      {
        valid = false;
        //el.focus();
      }
    }
  });
  if (!valid)
    return; // not ready to submit
  var options = {
    url:          document.location.origin + 'update.php',
    type:         'post',
    dataType:     'json',
    beforeSubmit: showRequest,  // pre-submit callback
    success:      showResponse, // post-submit callback
    error:        showError // post-submit callback
  };
  // bind form using 'ajaxForm'
  $(this).ajaxSubmit(options);
};

稍后在我的main.js中,我点击按钮时会运行以下行:

$('#contact-form').formSubmit();

同样在我的main.js中我有:

$('body').on('change', '#contact-form', formSubmit);

在我的HTML中:

<form name="contact" id="contact-form">
  <input type="text" name="name" value="" required>
  <input type="hidden" name="page" value="contact">
</form>

当我运行$('#contact-form').formSubmit();行时,我收到错误:

Uncaught TypeError: $(...).formSubmit is not a function

但是,当我只是编辑名称字段(触发&#34;更改&#34;行)时,它会更新并运行该函数。

我错过了什么?

编辑:看起来我正在寻找的结果并不明显,可能是因为我对javascript并不是很熟悉。

我想要做的是有一个运行formSubmit()函数的按钮,使得该函数中的$(this)元素是表单元素。

我以为我可以运行$('#contact-form').formSubmit()来做到这一点,但显然不是吗?

如何运行formSubmit()函数,以便该函数中的$(this)引用ID为'#contact-form'的元素?

2 个答案:

答案 0 :(得分:1)

替换

$('#contact-form').formSubmit();

使用

$('#contact-form').submit();

https://api.jquery.com/submit/

答案 1 :(得分:0)

尝试提交。

$('#contact-form').submit(function(){
}