jQuery - html链接包含confirm(),从脚本中读取所选选项

dhxwm5r4  于 2023-11-17  发布在  jQuery
关注(0)|答案(2)|浏览(149)

我的html页面有一个提交按钮,如下所示:
第一个月
当用户单击此按钮时,我需要检测他们是否选择了确定或取消。
我正在尝试使用以下在我的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。随后点击按钮似乎会多次触发。
我需要有这个按钮被点击后立即运行,如果取消被选中,它应该停止,不做任何进一步的。
有什么办法可以做到吗?
谢谢

cvxl0en2

cvxl0en21#

假设您的提交按钮(其名称不需要提交)是在一个表单中,

$(() => { // 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();
    }
  });

})

个字符
如果不是一个表单,就把它做成一个按钮:

$(() => { // 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?')">

的字符串

fumotvh3

fumotvh32#

你的代码看起来很混乱,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 submit button onclick code

相关问题