相关疑难解决方法(0)

event.preventDefault()与return false

当我想在某个事件被触发后阻止其他事件处理程序执行时,我可以使用两种技术之一.我将在示例中使用jQuery,但这也适用于plain-JS:

1. event.preventDefault()

$('a').click(function (e) {
    // custom handling here
    e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

2. return false

$('a').click(function () {
    // custom handling here
    return false;
});
Run Code Online (Sandbox Code Playgroud)

这两种停止事件传播的方法之间有什么显着差异吗?

对我来说,return false;比执行方法更简单,更短并且可能更不容易出错.使用该方法,您必须记住正确的套管,括号等.

另外,我必须在回调中定义第一个参数才能调用该方法.也许,有一些原因可以解释为什么我应该避免这样做并使用preventDefault呢?有什么更好的方法?

javascript jquery event-handling event-propagation dom-events

2891
推荐指数
9
解决办法
81万
查看次数

表单重置后调用函数

有一种方法让我在单击表单中的重置按钮后调用一个函数,我的意思是之后,所以首先重置表单,然后调用我的函数.正常事件冒泡会调用我的函数,然后才重置表单.现在我想避免使用setTimeout来执行此操作.

我需要的是在重置表单时调用函数,因为我使用统一和统一需要在值更改时更新.

目前我这样做:

//Reset inputs in a form when reset button is hit  
$("button[type='reset']").live('click', function(){  
    elem = this;  
    //Sadly we need to use setTimeout to execute this after the reset has taken place  
    setTimeout(function(){  
        $.each($(elem).parents('form').find(":input"), function(){  
            $.uniform.update($(this));  
        });  
    }, 50);  
});  
Run Code Online (Sandbox Code Playgroud)

我试图做这个,$(':input').change()但重置一个元素似乎不会触发更改事件.
预先感谢您的任何帮助.

html javascript jquery

11
推荐指数
2
解决办法
2万
查看次数

如何在重置表单时运行JavaScript代码?

我知道我们可以将一个处理程序附加到表单onsubmit...但是我们如何在表单重置事件中添加一个处理程序?(通常在点击时<input type="reset">)

或者......也许没有这样的事件......那么关于如何解决这个问题的问题呢?

(现在,我想在重置事件运行一个处理程序;但有一天我可能需要在重置事件之前运行)

html javascript forms javascript-events

5
推荐指数
1
解决办法
3289
查看次数

jQuery无法使用.val('')清除特定输入

我一直在这里寻找错误,因为单击HTML中的重置按钮时无法清除输入的#keywordsearch。但是,我什么都找不到-您看到问题了吗?

http://jsfiddle.net/eKWyY/

这是我的JS:

$('#dirreset').click(function() {
            $('#fatform option').each(function(index) {
                $(this).removeAttr("selected");
            });
            $('#keywordsearch').val('');
        });
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助,这让我有点生气!

大须

forms jquery input clear

5
推荐指数
1
解决办法
5464
查看次数

表格重置后立即执行代码

如何在表单重置后立即运行一段代码?

reset事件触发的表单字段得到重置为默认值.所以,例如:

$('form').on('reset', function(e) {
    $('input').val('a value that should be set after the form has been reset');
});
Run Code Online (Sandbox Code Playgroud)

这不行.(演示)

reset事件在浏览器处理默认表单重置行为之前触发时,上面的代码只是valuereset事件的默认操作发生之前设置输入,将输入的值恢复为其默认值.这是有道理的,因为我可以打电话e.preventDefault()取消表单重置.

我的用例需要在表单重置后立即执行代码.在简单的情况下,一个setTimeout就足够了:

$('form').on('reset', function(e) {
    setTimeout(function() {
        $('input').val('yay it works now');
    }, 0);
});
Run Code Online (Sandbox Code Playgroud)

这有效,因为在完成冒泡并且浏览器已处理其默认操作之后,setTimeout在未来的某个时间执行reset.

然而,这失去了同步性.一旦我必须以编程方式重置表单并从另一个地方操纵它,一切都会流失.

$('form').on('reset', function(e) {
    setTimeout(function() {
        $('input').val("reset'd value");
    }, 0);
});

//somewhere in another module..
$('form').trigger('reset');
$('input').val('value after resetting the form');
Run Code Online (Sandbox Code Playgroud)

(演示 …

javascript forms jquery dom

5
推荐指数
1
解决办法
396
查看次数