【问题标题】:confirm() doesn't wait for user to click buttonConfirm() 不等待用户点击按钮
【发布时间】:2018-10-25 18:27:45
【问题描述】:

在一个经典的 ASP 页面中,我有一个 form,我在其中单击提交以保存我在数据库中选择的位置,另一个按钮用于删除选定的位置。实际上是两种不同的操作形式,在其相关的 .js 文件中我有删除按钮单击处理函数。

问题是一旦我单击删除按钮 javascript 的简单是/否 confirm 消息框出现,但它不会等待用户单击是或否并返回始终“未定义”显示“否”在安慰。

我使用preventDefault() 让确认消息框在消失之前等待被点击,但这并没有解决我的问题。我会错过什么吗?

<form action="/placeIn" method="post" name="place" class="placeForm">
  <!-- form -->
  <div class="center">
    <button class="btn btn-default" id="placeDelete">Delete</button>
    <input type="submit" id="submittoplace" name="submitplacement" value="Next" />
  </div>
</form>
jQuery(document).ready(function(e) {
  $('#placeDelete').click(function(e) {
    var ids = $(this).closest('form').find('input[name$="placeID"]:checked').map(function() {
      return this.value;
    }).get().join(',');

    if (confirm("Delete?")) {
      console.log("yes");
      $.get('/pages/ACT.asp', {
        act: 'placesDEL',
        id: ids,
        r: Math.floor(Math.random() * 10000)
      }, function(data) {
        if (data != 'OK')
          alert(data);
        else
          location.href = '/place';
      });
    } else
      console.log("no");

    e.preventDefault();
  });
});

【问题讨论】:

  • 无法复制:jsfiddle.net/6tx92Lpg。检查控制台是否有错误
  • "总是返回 "undefined"":您是否试图在 get 回调之外的某个地方记录 data
  • 可能有点偏题,但preventDefault() 对确认框的行为没有任何影响。如果事件具有默认动作,则所述方法防止事件的默认动作。在您的情况下,它会阻止提交表单(默认情况下,没有指定类型的表单中的按钮是提交类型)。
  • 它已经工作了here
  • 您能否提供更多详细信息或实时代码 sn-p。我们不明白您的问题。

标签: javascript jquery


【解决方案1】:

解决了! 我只需要在里面确认功能:

confirm('Delete?',function(){
  console.log("confirmed");
  $.get('/pages/ACT.asp',{ act:'placesDEL', id: ids, r: Math.floor(Math.random()*10000)}, function(data){       
    if (data!='OK')alert(data);else location.href='/checkout';
  });
});

所以它起作用了。我认为在它不想触发真正的确认事件之前,所以以这种方式我将“内部”放置在确认调用中,如果我按是,则触发事件。

【讨论】:

  • 这不是 window.confirm 的本机行为,很可能您已经加载了带有自定义确认框的库。
猜你喜欢
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 2021-04-13
  • 1970-01-01
  • 2019-01-11
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多