I have this function that disables the input after user clicks:
$('.click-off').click(function () {
var btn = this;
setTimeout(function () { $(btn).attr('disabled', 'disabled'); }, 1);
return true;
});
And I have this input with a javascript confirmation:
<input type="submit" class="click-off" onclick="return confirm('Are you sure?');" value="Delete">
Even if I click "cancel" in the confirmation box, the $('.click-off').click() event is called, and the button becomes disabled.
The $('.click-off').click() is used by a lot of inputs, so the confirmation can't be inside of it.
How can I check the confirm return in the $('.click-off').click event? Or even prevent the $('.click-off').click event to be called?
using return false in an onclick event stops the browser from processing the rest of the execution stack, which includes following the link in the href attribute. In other words, adding return false stops the href from working.
The onclick event generally occurs when the user clicks on an element. It allows the programmer to execute a JavaScript's function when an element gets clicked. This event can be used for validating a form, warning messages and many more. Using JavaScript, this event can be dynamically added to any element.
onclick runs the function immediately. JavaScript.
onclick Event: This event occurs when the user clicks on an element.
Why would you have these pieces of logic be separate in the first place? Here are 2 methods to get around the problem:
Combine the logic into a single method:
$('.click-off').click(function () {
// escape here if the confirm is false;
if (!confirm('Are you sure?')) return false;
var btn = this;
setTimeout(function () { $(btn).attr('disabled', 'disabled'); }, 1);
return true;
});
Use a global variable (or object preferably):
var clickOffConfirmed = false;
<input type="submit" class="click-off" onclick="clickOffConfirmed = confirm('Are you sure?');" value="Delete" />
$('.click-off').click(function () {
// escape here if the confirm is false;
if (!clickOffConfirmed) return false;
var btn = this;
setTimeout(function () { $(btn).attr('disabled', 'disabled'); }, 1);
return true;
});
Try capturing the confirm box then disabling the button.
$('.click-off').click(function () {
var r=confirm("Press a button");
if (r==true)
{
$(this).attr('disabled', 'disabled');
}
else
{
}
});
also remove the onclick
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With