Javascript 防止在单击提交按钮时关闭引导模式

Javascript 防止在单击提交按钮时关闭引导模式,javascript,jquery,twitter-bootstrap,Javascript,Jquery,Twitter Bootstrap,我有一个引导模式。当用户单击“更新”按钮时,它会发出一个ajax调用来更新数据库。但是,如果由于某种原因更新失败,我希望显示错误消息并保持模式打开 一切似乎都按照我预期的顺序运行,但是e.preventDefault()似乎无法阻止模式关闭 为什么preventDefault()没有停止按钮的提交 我的按钮: <button type="submit" class="btn btn-success" id="btnUpdate" style="margin-right:10px">U

我有一个引导模式。当用户单击“更新”按钮时,它会发出一个ajax调用来更新数据库。但是,如果由于某种原因更新失败,我希望显示错误消息并保持模式打开

一切似乎都按照我预期的顺序运行,但是
e.preventDefault()
似乎无法阻止模式关闭

为什么
preventDefault()
没有停止按钮的提交

我的按钮:

<button type="submit" class="btn btn-success" id="btnUpdate" style="margin-right:10px">Update</button>

只需将按钮类型更改为
按钮
即可防止提交:

<button type="button" class="btn btn-success" id="btnUpdate" style="margin-right:10px">Update</button>
e.preventDefault()
是从
updateData
方法的回调函数调用的,很可能在调用回调之前事件已完成

在调用
updateData
方法之前,尝试放置
e.preventDefault()


希望这有帮助

Bootstrap附带的“本机”模式似乎对javascript程序员不友好,请参阅下面的替代插件:

BootstrapDialog.show({
标题:“Ajax检查”,
消息:“单击下面的按钮”,
按钮:[{
标签:“提交”,
cssClass:'btn primary',
操作:函数(dialogRef){
//假设这里启动了一个新的ajax请求
$.when().done(函数()){
var-ok=false;
如果(!ok){
dialogRef.setMessage('Dude,出了点问题!');
}否则{
警惕(“伟大!”);
}
});
}
}, {
标签:“取消”,
操作:函数(dialogRef){
dialogRef.close();
}
}]
});


这确实有帮助,但会导致客户端验证出现问题。我将按钮从submit更改为button,并在代码中添加了一些内容,以成功关闭模式,这很好。。。但是在模式中,我有两个输入字段,我添加了“required”属性。它现在停止工作,因为它不再是提交按钮。我想我完全可以处理服务器端的错误检查,但最终还是希望在客户端和服务器端都进行验证。我明白你的意思,但对我来说不起作用。我想我的主页上有一个缺陷。当我检查html时,我的引导模式中没有一个呈现标记。
<button type="button" class="btn btn-success" id="btnUpdate" style="margin-right:10px">Update</button>
$("#btnUpdate").on("click", function (e) {
  // reset the message...
  $("#errorMessage").html("");

  if($("form")[0].checkValidity()) {
    // get the value...
    var myParam = $("#someSelection").attr("someData");
    var myParamData = JSON.parse(myParam );

    updateData(myParamData.Name)
      .done(function (result) {
      if (!result.d == "") {
        $("#errorMessage").html(result.d);
        e.preventDefault();
      }
      else {                     
        loadData();
      }
    });
  }else{
    console.log("invalid form");
  }
});