【问题标题】:Submit form normally after validating with jquery用jquery验证后正常提交表单
【发布时间】:2012-11-22 18:55:09
【问题描述】:

我从这里使用 jquery.form.js:http://www.malsup.com/jquery/form/。我想在提交之前验证表单中文本输入的文本。验证转到 'search_validate.php'。这部分工作正常。如果验证通过,则更改表单操作。这也有效。

更改 action 属性后无法正常提交表单。浏览器永远不会进入“/videos/search/”页面。它保持在同一页面上。我看到在 Firebug 中一遍又一遍地加载“/videos/search/”页面。

<form id="search" method="post" action="">
<input type="text" id="query" />
<input type="image" id="searchmag" src="blah.jpg" ?>
</form>

<script>
$(function(){
  $('#searchmag').click(function(){
    $('#search').attr('action','/search_validate.php');

    $('#search').ajaxForm(function(data, textStatus){
      if ((data.indexOf('letters & numbers only')>-1)) {
      $('#query').css('color','#FF0000').val(data); 

      $("#query").unbind("click").click(function(){
        $('#query').css('color','#848484').val('');
      });
    } else {
      $('#search').attr('action','/videos/search/' + $('#query').val());
      $('#search').submit();
    }
    });
  });
});
</script>

【问题讨论】:

  • 如果你想要重定向,那么使用 ajax 有什么意义呢?只需使用$('#search')[0].submit();
  • @asad 我没有 [0]。现在它起作用了。添加你的答案,这样我就可以给你信用
  • 没关系,很高兴为您提供帮助。 :)
  • 如果您支持 Asad 的两个 cmets,您将给予他几乎相同数量的积分。赞成票是 +10 代表,接受的答案是 +15。
  • @gibberish ??? upvote cmets 没有给出任何“点”

标签: javascript jquery html forms


【解决方案1】:

这对我总是有效的:

$("#myForm").on("submit", function(event) {
    event.preventDefault();

    // Validate form, returning on failure.

    $(this).off("submit");

    this.submit();
});

我希望这会有所帮助!

【讨论】:

  • 这需要单击提交按钮两次才能使其正常工作。在第一次对我不起作用后,我逐字测试了这段代码。
  • 替换 this.submit();与 $(this).trigger('submit');它应该工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
相关资源
最近更新 更多