当前位置: 首页 > 面试题库 >

首次提交Ajax表单后,Bootstrap下拉列表不起作用

薄兴昌
2023-03-14
问题内容

我的页面上有一个下拉菜单manager.php,在这里。抱歉,格式化-引导程序:

  <!-- Bootstrap -->
  <script type="text/javascript" src="https://netdna.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
  <link rel="stylesheet" href="../../css/bootstrapstyle.css">
  <!-- Bootstrap Dropdown Enhancements-->
  <script type="text/javascript" src="../../js/dropdowns-enhancement.js"></script>
  <link rel="stylesheet" href="../../css/dropdowns-enhancement.css">

<div class="row">
  <div class="col-lg-6">
    <div class="input-group">
      <div class="input-group-btn">
        <button type="button" class="btn dropdown-toggle btn-primary" data-toggle="dropdown" aria-expanded="false">Search By <span class="caret"></span></button>
        <ul id="searchBy" class="dropdown-menu" role="menu">
          <li class="disabled"><a href="#">Search By...</a></li>
          <li><a href="#">cost</a></li>
          <li><a href="#">name</a></li>              
        </ul>
      </div>               
    </div>
  </div>
</div>

<div id="everything">
</div>

当我manager.php直接加载并且下拉列表初始化时,此代码可以正常工作,但这不是我需要代码工作的方式。

用户开始return.php; 此页面从用户那里收集一堆数据 并将返回manager.php

一旦用户选择执行操作return.php,此代码将运行:

$.ajax({
      type: 'POST',
      url: 'manager.php',      
      data: {number:number, location:location, project:project, comments:comments},        
        success:function(data){
        $('#everything').html(data);                                                            
        }
  });

ajax调用正常工作,并将从中返回的数据加载manager.phpeverythingdiv中。它按预期传递数据。加载manager.php到DIV
时唯一不起作用的是下拉菜单。我需要了解我在做错什么导致该功能,以便将来避免这样做。


问题答案:

将数据加载到everything div后,需要手动重置下拉菜单。我已经修改了您的AJAX通话,以向您显示该通话的位置。

$.ajax({
      type: 'POST',
      url: 'manager.php',      
      data: {number:number, location:location, project:project, comments:comments},        
        success:function(data){
          $('#everything').html(data);
          $('#searchBy').dropdown();
        }
  });

您正在执行的动态加载不会导致DOM重新加载,也不会强制下拉列表重新初始化。AJAX调用完成后,您可以通过调用手动重置引导下拉列表.dropdown();

编辑

通常,引导中用于功能的功能是通过$( document ).ready()调用来设置的。在加载DOM之后且仅在完全加载DOM之后,此函数执行一次。由于操作了DOM,因此不会再次触发该功能,而是需要手动触发所需的功能。

您还希望在每个页面上仅加载一次包含。他们需要在manager.php上才能在您进入成功方法时可用。我建议为您的项目使用模板,以便您将所有包含项集中管理。另外,如果您将manager.php用作要包含在另一个页面中的页面,则没有JavaScript片段的引用也行不通,因为您不希望用户自己访问该组件。

The reload you are doing appears to be forcing the content to be re-added to
the page, thus forcing the $( document ).ready() call in the included file
to be re-executed. You can do this, but it’s very inefficient.



 类似资料:
  • 问题内容: angularjs和bootstrap有点新。 我正在尝试添加一个简单的下拉菜单。但这是行不通的。 尝试了@ Bootstrap3简单下拉菜单的建议。那也行不通。 完整代码@ http://plnkr.co/edit/uFDFOJfHjL5qY9nVEykq?p=preview 希望有人能帮助我。 问题答案: 您需要在应用程序中包含模块。 并从下拉触发器中删除。 普伦克

  • 问题内容: 我正在尝试通过AJAX提交表单,而不是使用常规的POST提交。HTML只是一个标准格式,我的jQuery代码如下: (基于此答案) 我从Submit函数返回false,但是表单仍在提交,我不知道为什么。没有收到任何Firebug错误。 问题答案: 如果html设置正确,则您的代码可以正常工作。这是我的测试html(使用php),因此您可以将其与自己的进行比较。

  • 问题内容: 我无法正常使用下拉菜单。我可以使导航栏完美显示,但是当我单击“ Dropdown”(二者之一)时,它不会显示下拉菜单。我曾尝试查看有关此问题的其他文章,但没有什么能解决每个人的问题。我直接从bootstrap网站复制了源代码,但似乎无法在我的机器上使用它。谁有想法?我盯着它看了一个小时,似乎无法弄清楚问题出在哪里。 问题答案: 也许尝试 看看是否行得通。

  • 问题内容: 我有一个要通过jQuery捕获并通过AJAX发送的表单。我的问题是,每次刷新页面时,表单都会提交多次。 我尝试取消绑定“提交”按钮,但通常在第一次提交后发布表单。任何帮助,将不胜感激 问题答案: 您最有可能正在使用或触发ajax事件。试试这个:

  • 问题内容: 我复制了下拉菜单的官方Bootstrap 4示例,但它不起作用,没有任何内容被下拉。 问题答案: 编辑:万一其他人遇到这个问题,我相信OP的解决方案是他没有导入。 检查jQuery和所有相关的Bootstrap组件是否存在。还要检查控制台,并确保没有错误。

  • Framework7 可以通过ajax自动提交 有两种自动提交方式: 当用户提交了表单 (点击了提交按钮) 或者当通过代码触发了 "submit" 事件 当用户更改了表单的内容,或者当通过代码触发了 "change" 事件 submit时提交表单数据 只需要添加 "ajax-submit" class 在form上,当submit时就会自动通过ajax发送表单数据 <form action="se