提问人:Tom 提问时间:11/16/2023 更新时间:11/17/2023 访问量:25
jQuery - html 链接包含 confirm(),从脚本中读取所选选项
jQuery - html link contains confirm(), read selected option from script
问:
我的 html 页面有一个提交按钮,如下所示:
<input type="submit" name="submit" value="Remove" class="remove" onclick="return window.confirm( Are you sure you want to remove this?)">
当用户单击此按钮时,我需要检测他们是否选择“确定”或“取消”。
我正在尝试使用在我的js脚本中运行的以下内容来执行此操作。
$("body").on('click', '.remove', function(e) {
e.preventDefault()
var _confirm_function = window.confirm;
window.confirm = function() {
var confirmed = _confirm_function.apply( window, arguments );
console.log ( confirmed )
if ( confirmed !== true ) {
console.log ( "user pressed cancel: Some cleanup");
return false
} else {
console.log ( "user pressed ok: Do tasks");
}
}
})
加载页面时,这似乎不会在第一次单击按钮时触发。第二次单击按钮时,它就可以工作,但即使它返回 false,它也会继续执行脚本并且不会返回 false。随后的按钮点击似乎多次触发。
我需要在单击按钮后立即运行它,如果选择了“取消”,它应该停止并且不再执行任何操作。
有什么办法可以做到这一点吗?
谢谢
答:
-1赞
KIKO Software
11/16/2023
#1
您的代码似乎非常混乱,window.confirm() 本身已经返回一个布尔值,指示按下了哪个按钮。为什么不使用它呢?像这样的东西:
[HTML全文]
<input type="submit" onclick="removeSomething();">
JAVASCTIPT
function removeSomething()
{
if (window.confirm("Are you sure you want to remove this?")) {
// place code here to remove whatever you want to remove
}
}
将此函数放在提交按钮中不太有意义。提交按钮通常是表单的一部分,并且,正如您的代码现在一样,无论用户的答案如何,都会提交此表单。如果没有表单,则不应使用提交按钮。另请参阅:HTML 提交按钮 onclick 代码。
评论
0赞
Tom
11/17/2023
对不起,我应该清楚HTML代码已设置,我无法更改。我必须更改 js 脚本,看看我是否可以检测到单击了什么选项。
1赞
mplungjan
11/17/2023
#2
假设您的提交按钮(其名称不需要提交)位于表单中
$(() => { // page load
const $button = $('[name=submit]'); // NEVER call anything submit in a form
const $form = $button.closest('form')
$button.prop('name', 'subbut');
$button.prop('onclick', null); // remove confirm
$form.on('submit', (e) => {
const confirmed = confirm('Are you sure you want to remove this?');
if (confirmed) {
console.log("user pressed ok: Do tasks");
} else {
console.log("user pressed cancel: Some cleanup");
e.preventDefault();
}
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<form>
<input type="submit" name="submit" value="Remove" class="remove" onclick="return window.confirm('Are you sure you want to remove this?')">
</form>
如果不在表单中,请将其设置为按钮:
$(() => { // page load
const $button = $('[name=submit]'); // NEVER call anything submit in a form
$button.prop('name', 'subbut');
$button.prop('onclick', null); // remove confirm
$button.type='button'
$button.on('click', (e) => {
const confirmed = confirm('Are you sure you want to remove this?');
if (confirmed) {
console.log("user pressed ok: Do tasks");
} else {
console.log("user pressed cancel: Some cleanup");
}
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<input type="submit" name="submit" value="Remove" class="remove" onclick="return window.confirm('Are you sure you want to remove this?')">
评论