【问题标题】:pass back data from bootstrap modal to his parent window将数据从引导模式传回其父窗口
【发布时间】:2016-12-27 12:43:06
【问题描述】:

有人可以帮我写一段 javascript 代码吗?我正在尝试开发一个小 web 应用程序,但我在从模式到他的父窗口的简单通信中遇到了麻烦:( 我正在使用 jquery、bootstrap、bootstrap.datetimepicker 和 bootstrap.validator1000hz。

我必须使用“sendData”输入字段作为参数从父窗口调用函数,因此我需要从模式中获取“sendData”的值。 提交按钮被正确禁用,直到用户输入所需的日期(因为验证器插件)但是当我点击它时,模式消失结束时没有任何内容打印到控制台。 提前致谢 !

这是我的模态

<!-- Modal -->

  <div id="modalPrint" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">Seleziona intervallo di stampa</h4>
      </div>
      <div class="modal-body">    
          <form>
          <div class="form-group">
               <div class="form-group">
                       <label>Indicare la data d'invio</label>
                          <div class='input-group date col-sm-3' id='sendData' data-date-format="DD/MM/YYYY">
                            <input type='text' class="form-control" required >
                            <span class="input-group-addon">
                                <span class="glyphicon glyphicon-calendar"></span>
                            </span>
                          </div>
                          <div class="help-block with-errors"></div>
                    </div>
               <button type="submit" id="print" class="btn btn-default btn-sm pull-right" data-dismiss="modal">
                                        <span class="glyphicon glyphicon-print"></span>
                                        <span style="font-size:smaller;">Stampa</span>
               </button> 
          </div>
         </form>

      <div class="modal-footer">

      </div>
    </div>
  </div>
</div>
<script>
    $('#modalPrint').validator().on('submit', function () {
         console.log('ok')
     });
</script>

【问题讨论】:

  • 您有任何在线示例可以说明$('#modalPrint').validator().on('submit', function () { 的使用位置和工作原理吗?
  • 'data-date-format' 不用于 div 的输入
  • @GuruprasadRao 很遗憾,这不是我在 Google Apps 脚本框架上开发的,我可以让能帮助我的人访问
  • @OmShankarK 可能你是对的,但是当这个 sintax 正确时我还有其他应用程序,无论如何,如果我尝试使用简单的文本字段,问题仍然存在。其实我认为问题首先在于插件引导验证器,可能我做错了什么:(

标签: javascript jquery bootstrap-modal bootstrapvalidator


【解决方案1】:

在模态中你可以使用这个:

<button id="print" onclick="SendData('+yourData +')" class="btn btn-default btn-sm pull-right" data-dismiss="modal">
                                        <span class="glyphicon glyphicon-print"></span>
                                        <span style="font-size:smaller;">Stampa</span>
</button> 

然后像这样在你的 js 中定义 SendData 函数:

function SendData (_data){
 var serialedjs = "...";
 $.ajax({
               type: "POST",
               url: 'page.aspx/YourWebMethodName',
               data: serialedjs,
               contentType: "application/json; charset=utf-8",
               dataType: "json",
               beforeSend: function (msg) {
                   //close modal here
                   $("div.modal-body").append(
                       '<img class="spinner" src="Content/ajax-loader.gif" />'
                   );
               },
               success: function (data) {
               },
               complete: function (data) {

               }
           });
}
}

更新:

jquery ajax 是一个异步 HTTP (Ajax) 请求。它在您的页面没有开始任何回发到服务器时发送数据。这是一个使用 jquery 的 ajax 调用:

$.ajax({
   url: 'http://yourpage_url/yourpage.html',
   data: {
      'yourDataKey1': 'yourDataValue1',
      'yourDataKey2': 'yourDataValue2',
      'yourDataKey3': 'yourDataValue3'
   },
   dataType: 'jsonp',
   contentType: "application/json; charset=utf-8",
   success: function(data) {
     alert('finish');
   },
   type: 'GET'
});

作为另一个示例,您可以在下面看到:

$.ajax({
  url: "/api/getWeather",
  data: {
    zipcode: 97201
  },
  success: function( result ) {
    $( "#weather-temp" ).html( "<strong>" + result + "</strong> degrees" );
  }
});

which 使用查询参数 zipcode=97201 调用服务器上的本地脚本 /api/getWeather 并将元素 #weather-temp 的 html 替换为返回的文本在页面上向用户显示状态。

如果您使用 php,页面上的 echo 将作为结果发送,如果您使用 asp.net,则 Response.Write 方法会写入结果并将其返回给您。 请看下图:

因此,在 ajax 调用中数据对象的 url 参数中,您将设置将处理您的请求的页面的 url。

所以你需要在页面顶部添加这个脚本:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

或者您可以下载 jquery 并将其放在您的项目文件附近并引用它们:

<script src="/libs/jquery/3.1.1/jquery.min.js"></script>

如需了解更多关于 jquery ajax 的信息,请访问:https://learn.jquery.com/ajax/key-concepts/

【讨论】:

  • 不幸的是,我不知道如何使用 ajax 请求导致 Google Apps 脚本返回给我一个 CORS 错误:(
  • @DanieleZappalà 查看更新后的 ajax 示例
  • 再次感谢您非常清楚的解释,但您知道我如何在 google 应用脚本上使用 ajax 请求吗?
  • 第二点,实际上我必须将值从模式传递到主窗口而不是我的服务器代码
  • @Daniele Zappalà,在答案的开头,我已经展示了如何将信息从模态传递到它的父级,SendData 方法与模态 js 代码在同一个 js 中。关于使用 ajax 和谷歌应用程序脚本我还没有完成,但也许这个链接可以帮助你:ctrlq.org/code/20197-jquery-ajax-call-google-script
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2019-01-31
  • 1970-01-01
  • 2015-08-11
相关资源
最近更新 更多