【问题标题】:Jquery prevent default doesn't work in wordpressJquery防止默认值在wordpress中不起作用
【发布时间】:2015-06-05 12:43:14
【问题描述】:

我已经尝试通过以下代码来防止表单提交的默认设置,但它不起作用。这有什么问题。

<div class="section-register">
    <form id="registerform" novalidate="novalidate" method="post" action="http://localhost/yify2/wp-login.php?action=register" name="registerform">
        <input id="wp-submit" class="button button-primary button-large" type="submit" value="Register" name="wp-submit">
    </form>
</div>

我的脚本是:

<script type="text/javascript">
    jQuery(document).ready(function() {
    jQuery(".section-register").find("#registerform").submit(function(event){
        if(whatever) { 
            event.preventDefault();  
        }  
      });
   });
</script>

我也尝试了以下代码:

<script>
jQuery(document).ready(function() {
    jQuery("#registerform").submit( function(e) {

        e.preventDefault();
    });
});
</script>

【问题讨论】:

  • 您的表单是通过 AJAX 加载的吗?
  • 第二个脚本正在处理小提琴。 jsfiddle.net/qyb3oafp
  • 是的,我已经加载了表单 jquery axaj。
  • 什么是“whatever”变量?
  • @JonasGrumann 我猜 OP 删除了所有 if "junk" 以专注于主要问题

标签: javascript jquery wordpress preventdefault


【解决方案1】:

如果您的表单是通过 AJAX 请求加载的,您需要在表单添加到 DOM 后绑定事件,或者将其绑定到静态节点:

委托事件绑定

<script>
jQuery(function($) { // Short for jQuery(document).ready(function() {
    // Bind the event to a static node (here I use document). 
    //   The closer to the dynamic node the better.
    // From your code it looks like you might be able to use  
    //   $('.section-register') as the static node.
    $(document).on('submit', '#registerform', function(event) {

        event.preventDefault();
    });
});
</script>

【讨论】:

  • @Sobujalice 请注意,最好将$(document) 更改为更接近的静态节点,例如$('.section-register')
【解决方案2】:

试试这个

<script>
jQuery(document).ready(function() {
jQuery("form[name=registerform]").submit( function(e) {

e.preventDefault();
    });
});
</script>

【讨论】:

  • 为什么要有所作为?
  • 表单的不同选择器
  • 是的,我可以看到不同之处,但它对更改选择器有什么帮助?
最近更新 更多