Default action not resetting on new call
I am having some problems with preventdefault in JavaScript, specifically jQuery. I am trying to get a modal box to show with elements with a class of ".confirm" which effectively overrides the default action confirming with the user if they are sure they want to carry out that action before continuing with what it was set out to do.
$('.confirm').on('click', function(event, options)
{
options = options || {};
if (!options.confirmed)
{
vex.dialog.confirm({
message: 'Are you sure that you want to perform this action?',
callback: function(response) {
if (response === true) {
$(event.target).trigger('click', {confirmed: response});
}
}
});
event.preventDefault();
}
});
Flow
Problem
But this is not the case as it seems that the default action is overriding any future calls from happening regardless.
Attempts
Notes
Any help would be awesome as it has me stumped for the time being
Try removing the click handler with $('.confirm').off()
in your callback. This way, when you programmatically trigger the click, your click handler be called.
Put event.preventDefault before the API call, this should work I guess.
$('.confirm').on('click', function(event, options)
{
options = options || {};
if (!options.confirmed)
{
event.preventDefault();
vex.dialog.confirm({
message: 'Are you sure that you want to perform this action?',
callback: function(response) {
if (response === true) {
$(event.target).trigger('click', {confirmed: response});
}
}
});
}
});
EDIT:
I think this is the only way without unbind/rebind as you said.
$('.confirm').on('click', function(event, options)
{
options = options || {};
if (!options.confirmed)
{
event.preventDefault();
vex.dialog.confirm({
message: 'Are you sure that you want to perform this action?',
callback: function(response) {
if (response === true) {
$(event.target).trigger('click', {confirmed: response});
}
}
});
}
else {
window.location = $(this).attr("href");
}
});
链接地址: http://www.djcxy.com/p/71708.html
上一篇: jquery:<a>链接点击preventDefault()不工作?
下一篇: 默认操作不会在新通话中重置