Confirm()不等待用户单击按钮

时间:2018-10-25 09:15:25

标签: javascript jquery

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

问题是,一旦我单击删除按钮,就会出现javascript的简单“是/否confirm”消息框,但它不会等待用户单击“是”或“否”,并且总是返回“ undefined”(未定义),显示“ no”在控制台中。

我使用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();
  });
});

1 个答案:

答案 0 :(得分:0)

解决了! 我只需要让函数内部像这样确认:

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';
  });
});

因此有效。我认为在它不想真正触发确认事件之前,因此我按“ Yes”将确认放置在“内部”以触发确认事件。