Javascript中的模态阻止对话框

时间:2011-09-22 13:38:56

标签: javascript jquery-ui modal-dialog openlayers blocking

我正在使用jQuery和jQuery UI在Javascript中开发Openlayers工具栏。

我想要实现的一个功能是向地图添加点。

在openLayers中,您必须侦听名为“sketchcomplete”的事件。

layer.events.on({
    'sketchcomplete': onPointAdded
});

问题在于onPointAdded回调。此回调应返回true或false。 True表示该点应添加到地图中,false表示取消将此点添加到地图。

现在回调看起来像这样:

onPointAdded = function(feature) {
  var f = feature.feature;
  var result = false;
  $('#dialog-point-add').dialog({
    modal : true,
    buttons : {
      'Add point' : function() {
        result = true;
        $(this).dialog("close");
      },
      'Cancel' : function() {
        result = false;
        $(this).dialog("close");
      }
    }
  });
  return result;
};

问题是此对话框不会阻止正在执行的代码。我在问你如何处理这种情况?我想向用户显示对话框并确认添加点。

2 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,你将无法使用jquery ui对话框执行此操作。香草js确认框应该可以工作。

答案 1 :(得分:0)

该函数无法阻止,因为JavaScript是单线程的,没有其他任何东西可以执行。你为什么不直接添加逻辑,如果函数返回true,你想调用'添加点'回调?

修改 “普通”JavaScript确认对话框将阻止:

onPointAdded = function(feature) {
  return confirm("Sure?");
};