0

如果我有一个带有 bootstrap min 和页面上其他一些 js 文件的 .net 页面,它将不会运行 js 文件。但是,如果我将 <form ...> 移动到文件的末尾,则 bootbox javascript 可以完美运行。

在您将表单移动到文件末尾之前,这将不起作用。怎么来的?我想使用确认按钮来确保用户确实想要提交表单,但我从这个简单的示例开始。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default6.aspx.cs" Inherits="Default6" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title>Untitled Page</title>
  <link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css"
    rel="stylesheet">
</head>
<body>
  <div class="container">
    <div class="row">
      <div class="span12">
        <h2>
          Bootbox.Js - Creativity Tuts</h2>
        <button class="btn btn-danger">
          Alert Box!</button>
      </div>
    </div>
  </div>

  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
  <script src="js/bootbox.min.js"></script>

  <script type="text/javascript">
        $(document).ready(function(){
            $('.btn').on('click', function(){
                bootbox.prompt("Enter your name", function(res){
                    if(res == null){
                        alert("Prompt cancelled by user.");
                    }else{
                        alert("Hi: "+res);
                    }
                });    
            });
        });

  </script>

  <form id="form1" runat="server">
  </form>
</body>
</html>
4

2 回答 2

3

另一种方法是:

ASPX 页面:

<asp:Button ID="btnProcess" runat="server" Text="Process"
OnClick="btnProcess_Click"
OnClientClick="return ShowConfirm(this.id);" />

Javascript:

var confirmed = false;

function ShowConfirm(controlID)
{
    if (confirmed) { return true; }

    bootbox.confirm("Are you sure want to continue?", function (result) {
        if (result) {
            if (controlID != null) {
                var controlToClick = document.getElementById(controlID);
                if (controlToClick != null) {
                    confirmed = true;
                    controlToClick.click();
                    confirmed = false;
                }
            }
        }

    });

    return false;

}
于 2014-01-29T13:52:34.960 回答
2

您可以在页面“”顶部的脚本中添加一个函数,如下所示:

    <script type="text/JavaScript">
    function PassToServerSide() {
        bootbox.confirm("Are you sure?", function (result) {
            if (result)
                __doPostBack('__EVENTTARGET', '__EVENTARGUMENT');
        });
    }
</script>

然后使用以下内容将帖子捕获回服务器端:

protected void Page_Load(object sender, EventArgs e)
{
    string parameter = Request["__EVENTARGUMENT"];
    switch (Request.Form["__EVENTTARGET"])
    {
        ...
    }
}

要将 javascript 函数分配给 asp 按钮,请执行以下操作:

        cmdButton.OnClientClick = "PassToServerSide();return false;";

确保添加“return false”,否则按钮会自动回复

于 2014-01-11T02:02:06.193 回答