一旦我解雇了evt.preventDefault()
,我该如何恢复默认操作?与evt.preventDefault()相反的是什么?
回答
我提出“相反”将模拟一个事件。你可以使用.createEvent()
继Mozilla的例子:
function simulateClick() {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
var cb = document.getElementById("checkbox");
var canceled = !cb.dispatchEvent(evt);
if(canceled) {
// A handler called preventDefault
alert("canceled");
} else {
// None of the handlers called preventDefault
alert("not canceled");
}
}
的jQuery已经.trigger()
这样你就可以触发事件的元素 - 有时是有用的。
$('#foo').bind('click', function() {
alert($(this).text());
});
$('#foo').trigger('click');
按照评论说@Prescott,相反:
evt.preventDefault();
可能是:
本质上等同于'做默认',因为我们”不再阻止它。
否则我倾向于给你点到另一个意见和答案提供的答案:
How to unbind a listener that is calling event.preventDefault() (using jQuery)?
How to reenable event.preventDefault?
注意,第二个已经接受了一个示例解决方案,给出由redsquare(这里发布的直接解决方案,如果这不是关闭作为重复):
$('form').submit(function(ev) {
ev.preventDefault();
//later you decide you want to submit
$(this).unbind('submit').submit()
});
这一个完美解决了我的问题。感谢您提供该片段! – 2016-02-03 13:03:31
谢谢!在这个问题上我正在摸索一段时间(我需要在提交表单之前停止并检查一些内容,而不是在某些情况下提交,并在其他情况下提交)。 – 2018-02-19 19:00:25
我会建议以下模式:
document.getElementById("foo").onsubmit = function(e) {
if (document.getElementById("test").value == "test") {
return true;
} else {
e.preventDefault();
}
}
<form id="foo">
<input id="test"/>
<input type="submit"/>
</form>
......除非我失去了一些东西。
function(evt) {evt.preventDefault();}
和与其相对
function(evt) {return true;}
喝彩!
这对我有效,但我想知道是否有人可以更好地解释它为什么? – edhedges 2013-05-16 13:18:52
这不会撤消preventDefault(),事实上它的作用与您会忽略'return true'一样:什么也不做。 – brannigan 2017-05-15 09:37:34
不起作用了。 ! – yogihosting 2017-08-01 11:55:33
我不得不在jQuery中延迟表单提交以执行异步调用。下面是简化的代码...
$("$theform").submit(function(e) {
e.preventDefault();
var $this = $(this);
$.ajax('/path/to/script.php',
{
type: "POST",
data: { value: $("#input_control").val() }
}).done(function(response) {
$this.unbind('submit').submit();
});
});
此场景中的另一个选项可能是使用input type =“button”并绑定到click事件,而不是使用input type =“submit”并绑定到提交事件。 – Strixy 2013-06-19 18:54:24
后就可以 “的preventDefault” 方法使用该
//这里evt.target返回默认的事件(例如:defult网址等)
var defaultEvent=evt.target;
//我们保存默认事件..
if("true")
{
//activate default event..
location.href(defaultEvent);
}
要处理一个命令之前继续从click
事件jQuery中的链接:
如:<a href="http://google.com/" class="myevent">Click me</a>
防止和使用jQuery跟进:
$('a.myevent').click(function(event) {
event.preventDefault();
// Do my commands
if(myEventThingFirst())
{
// then redirect to original location
window.location = this.href;
}
else
{
alert("Couldn't do my thing first");
}
});
或者干脆运行window.location = this.href;
preventDefault();
没错,但是这里假定preventDefault是一个链接,并且不会在文档主体上表示touchmove。 – Bangkokian 2015-09-06 10:51:04
这不是问题所在。 – 2016-09-21 12:56:49
我已经使用了下面的代码。这对我来说可以。
$('a').bind('click', function(e) {
e.stopPropagation();
});
[如jQuery API文档中所述](http://api.jquery.com/event.stoppropagation/),这可以防止事件冒泡DOM树,从而阻止任何父处理程序被通知事件。这不同于/ event.preventDefault()'; – 2015-01-20 14:53:30
这不是问题的问题。 – 2016-09-21 12:57:02
OK!它适用于点击事件:
$("#submit").click(function(e){
e.preventDefault();
-> block the click of the sumbit ... do what you want
$("#submit").unbind('click').click(); // the html click submit work now !
});
jquery on()可能是另一种解决方案。特别是当涉及到使用namespaces。 ()只是绑定事件(而不是绑定())的当前方式。 off()是取消绑定这些。而当您使用命名空间时,您可以添加和删除多个不同的事件。
$(selector).on("submit.my-namespace", function(event) {
//prevent the event
event.preventDefault();
//cache the selector
var $this = $(this);
if (my_condition_is_true) {
//when 'my_condition_is_true' is met, the binding is removed and the event is triggered again.
$this.off("submit.my-namespace").trigger("submit");
}
});
现在使用的命名空间,你可以添加这些事件的多,并能消除那些,根据您的需要。虽然提交可能不是最好的例子,这可能会派上用场上单击或按键或任何..
您可以随时使用这个连接在你的脚本中一些单击事件:
location.href = this.href;
例子用法是:
jQuery('a').click(function(e) {
location.href = this.href;
});
此代码工作对我来说,我用了之后重新实例事件:
event.preventDefault(); to disable the event.
event.preventDefault = false;
- 1. 与void标签相反的是什么?
- 2. OnSetActive()的“相反”是什么?
- 3. 什么是BatchBlock相反块
- 4. Ruby的包括什么是相反的?
- 5. 什么是相反的JavaScript匹配()
- 6. “git add”的相反命令是什么?
- 7. 202接受的相反是什么?
- 8. MATCH AGAINST的相反情况是什么?
- 9. SelectMany的相反之处是什么?
- 10. 继承的相反部分是什么?
- 11. tesselation的相反之处是什么?
- 12. “格式”的相反之处是什么?
- 13. TDD的相反之处是什么?
- 14. jQuery`.get()`的相反之处是什么?
- 15. forceActiveFocus的相反之处是什么?
- 16. 与C#中的加密+压缩代码相反的是什么?
- 17. 与ChannelFactory相反的是什么?<TChannel> .CreateChannel?
- 18. 与符号计算相反的是什么?
- 19. 函数的名称是什么,它与HttpUtility.JavaScriptStringEncode相反?
- 20. 与indexof()相反的javascript函数是什么?
- 21. 与main()相当的Objective-C是什么?
- 22. 与此preg_replace相当的Java是什么?
- 23. 与webmin相当的Java是什么?
- 24. 与JDBC DatabaseMetaData相当的Python是什么?
- 25. 空的.git/info/sparse-checkout与缺少的不同,但是相反,为什么?
- 26. 与EventHandler相比,EventListener是什么?
- 27. 为什么浮动元素与下面的元素重叠,而不是相反?
- 28. 将margin-top设置为与高度相反的最佳方式是什么?
- 29. 什么是与在Silverlight相反构建业务应用程序的HTML
- 30. Visual Studio 2010中的F7 - 什么是相反的?
我觉得一般的功能将运行,然后默认行为将运行,所以你永远不会调用evt.preventDefault()在第一个地方 – Prescott 2011-04-13 15:44:19
你能给我们一个你想要做什么的例子吗? – 2011-04-13 15:45:56
可能重复? :http://stackoverflow.com/questions/1551389/how-to-enable-default-after-event-preventdefault – Nobita 2011-04-13 15:47:09