从html调用jquery函数而不阻止默认

时间:2015-12-09 12:44:07

标签: jquery html

所以我在类似问题上看到了很多答案,但没有找到如何使其正常工作。 我在查询中有很多函数,并且所有函数都没有完成,因为html事件加载了下一页。所以我需要的是如何使html事件等到jquery检查它应检查的所有内容。

所以jquery的例子是

jQuery.noConflict();
jQuery(document).ready(function($) {
    $(document).on("click","input[name=open]", function () {
        var login = $("input[name=field1]").val();
        var pas = $("input[name=field2]").val();
        alert('I call it');

        $.post("index.php", { 
            st: 1, 
            field1: field1, 
            field2: field2
        }, function(data) {
            alert(data);
            if ($.trim(data) == 'er') {
                alert("Sorry incorrect data");
                return false;
            }
            else
                return true;
        });
    });
});
<div>   
    <form method="POST" action="index.php?cd=in">
        <!----code here --->
        <div>
            <input name="open" class="field_submit" type="submit" size="7" value="IN" ">
        </div>

因此,当没有action="index.php?cd=in"行时,该函数可以正常工作。所以发生的只是启动函数但没有等待结果并进行重定向。所以有几种方法可以阻止它:

  1. 通过jQuery重定向,但它不是我需要的
  2. 在标记输入事件onclick="return function-name();"
  3. 上的HTML文件中生成

    但问题是如何纠正实现jquery文件的功能因为当我把函数放在控制台里面时给我一个错误,因为我没有定义函数。所以问题是如何在jquery文件中准确地实现它对HTML文件中的onclick事件起作用。或者如果你知道其他更好的变种来实现它。感谢

1 个答案:

答案 0 :(得分:2)

您需要的是:

// bind submit event on form, not click of submit
// because a form can be submited without clicking submit button
$(document).on("submit", "form:has(input[name=open])", function(e) {
  e.preventDefault();  // prevent default behaviour
  var self = this; // keep ref on form
  var login = $(this).find("input[name=field1]").val();
  var pass = $(this).find("input[name=field2]").val();
  alert('I call it');
  $.post("index.php", {
    st: 1,
    login: login,
    pass: pass
  }, function(data) {
    alert(data);
    if ($.trim(data) == 'er') {
      alert("Sorry incorrect data");
      return false; // if error, return whatever value
    }
    self.submit(); // submit the FORM calling submit DOM API method (doesn't trigger jq submit handler)
  });

});