如何使用jQuery Mobile创建一个搜索输入

创建一个搜索输入在jQuery Mobile中非常简单。首先,我们需要遵循以下步骤:

步骤一:创建HTML结构

使用jQuery Mobile时,我们需要使用其专有的HTML结构。在这个例子中,我们需要添加一个输入框和一个按钮,并将它们包裹在一个页面容器中:

<div data-role="page">
  <div data-role="content">
    <form>
      <div class="ui-field-contain">
        <label for="search">搜索:</label>
        <input type="text" name="search" id="search">
        <button type="submit" id="submit">搜索</button>
      </div>
    </form>
  </div>
</div>

注意我们使用了data-role属性和class来定义页面容器和表单元素。我们还为输入框添加了id属性以便稍后进行JavaScript操作。

步骤二:添加JavaScript

接下来,我们需要添加一些JavaScript代码来处理搜索功能。使用jQuery Mobile时,我们需要确保代码位于页面容器之后,这样它们可以正确地加载。

在这个例子中,我们将使用jQuery的ajax函数来获取搜索结果。当用户点击“搜索”按钮时,我们会阻止表单的默认提交行为,然后发起ajax请求。请求完成后,我们将搜索结果呈现在页面上:

<script>
  // 等待DOM加载完成后开始
  $(document).on('pagecreate', function() {

    // 阻止表单的默认提交行为
    $('form').on('submit', function(event) {
      event.preventDefault();

      // 发起ajax请求
      $.ajax({
        url: 'https://api.example.com/search?q=' + $('#search').val(),
        success: function(data) {

          // 根据搜索结果创建HTML元素
          var resultHtml = '';
          $.each(data, function(index, result) {
            resultHtml += '<li><a href="' + result.url + '">' + result.title + '</a></li>';
          });

          // 将搜索结果呈现在页面上
          $('#search-results').html(resultHtml).listview('refresh');
        }
      });

      // 清空搜索框
      $('#search').val('');
    });
  });
</script>

我们首先等待DOM完成加载,接着为表单添加一个submit事件监听函数。在事件处理程序中,我们阻止表单的默认行为并发起ajax请求。成功返回后,我们使用jQuery的$.each函数遍历搜索结果,并用HTML格式化它们。最后,我们将结果呈现在页面的#search-results列表中。

示例1:基本的搜索输入

以下是一个基本的搜索输入示例,其中我们只有一个搜索框和一个搜索按钮:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>搜索输入示例</title>
  <link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
  <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
  <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
</head>
<body>

<div data-role="page">
  <div data-role="content">
    <form>
      <div class="ui-field-contain">
        <label for="search">搜索:</label>
        <input type="text" name="search" id="search">
        <button type="submit" id="submit">搜索</button>
      </div>
    </form>
    <ul data-role="listview" id="search-results"></ul>
  </div>
</div>

<script>
  // 等待DOM加载完成后开始
  $(document).on('pagecreate', function() {

    // 阻止表单的默认提交行为
    $('form').on('submit', function(event) {
      event.preventDefault();

      // 发起ajax请求
      $.ajax({
        url: 'https://api.example.com/search?q=' + $('#search').val(),
        success: function(data) {

          // 根据搜索结果创建HTML元素
          var resultHtml = '';
          $.each(data, function(index, result) {
            resultHtml += '<li><a href="' + result.url + '">' + result.title + '</a></li>';
          });

          // 将搜索结果呈现在页面上
          $('#search-results').html(resultHtml).listview('refresh');
        }
      });

      // 清空搜索框
      $('#search').val('');
    });
  });
</script>

</body>
</html>

示例2:自动完成搜索

如果您想要提供更加完整和快速的搜索体验,那么可以使用自动完成搜索。以下是一个带有自动完成搜索的搜索输入示例,它会在用户每输入一个字符时自动查询后台API并呈现搜索结果:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>搜索输入示例</title>
  <link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
  <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
  <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
</head>
<body>

<div data-role="page">
  <div data-role="content">
    <form>
      <div class="ui-field-contain">
        <label for="search">搜索:</label>
        <input type="text" name="search" id="search" data-type="search">
      </div>
    </form>
    <ul data-role="listview" id="search-results"></ul>
  </div>
</div>

<script>
  // 等待DOM加载完成后开始
  $(document).on('pagecreate', function() {

    // 监听搜索框键盘输入事件
    $('#search').on('keyup', function() {
      var searchValue = $('#search').val();

      // 发起ajax请求
      $.ajax({
        url: 'https://api.example.com/search?q=' + searchValue,
        success: function(data) {

          // 根据搜索结果创建HTML元素
          var resultHtml = '';
          $.each(data, function(index, result) {
            resultHtml += '<li><a href="' + result.url + '">' + result.title + '</a></li>';
          });

          // 将搜索结果呈现在页面上
          $('#search-results').html(resultHtml).listview('refresh');
        }
      });
    });
  });
</script>

</body>
</html>

在这个例子中,我们首先将搜索框的type属性设置为“search”,这样jQuery Mobile会自动为我们添加一个清空按钮。我们接下来监听搜索框的keyup事件,并发起ajax请求。我们不再需要提交按钮,因为我们会在输入的每一个字符发生变化时进行搜索。 最后,我们将搜索结果呈现在页面的#search-results列表中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用jQuery Mobile创建一个搜索输入 - Python技术站

(0)
上一篇 2023年5月12日
下一篇 2023年5月12日

相关文章

  • EasyUI jQuery 窗口小部件

    EasyUI jQuery 窗口小部件是一个基于jQuery的UI框架,它提供了各种易于使用的弹出窗口,包括对话框、消息框、窗口和提示框,可以节省开发人员的时间和精力。 下面我将为您详细讲解“EasyUI jQuery 窗口小部件”的完整攻略。 窗口小部件的引入 要使用EasyUI jQuery 窗口小部件,首先需要将相应的CSS和JS文件引入到HTML页面…

    jquery 2023年5月13日
    00
  • php+jQuery.uploadify实现文件上传教程

    下面是详细的讲解“php+jQuery.uploadify实现文件上传教程”的完整攻略。 一、前言 文件上传功能在很多网站中都非常常见。本文将会教你使用php和jQuery.uploadify插件来实现上传文件的功能,其中php将作为后端语言,jQuery.uploadify插件将用于前端。 二、环境准备 在开始编写代码之前,需要确保你已经正确的搭建好了ph…

    jquery 2023年5月27日
    00
  • jQuery Effect show()方法

    当我们使用jQuery时,我们可以使用其提供的一些效果方法来实现有趣的动画效果。其中show()方法用于将隐藏元素显示出来。下面是show()方法的完整攻略。 方法语法 show()方法有四个可选参数:speed、easing、callback和filter。其中,speed表示动画的速度,可以设置为字符型的slow(600毫秒)、fast(200毫秒)或者…

    jquery 2023年5月12日
    00
  • jQuery遍历节点元素方法介绍

    jQuery遍历节点元素方法介绍 在使用jQuery库的javascript代码中经常需要根据选择器选中指定的节点元素,并对其进行操作。jQuery提供了一系列遍历节点元素的方法,可以方便实现这个目标。 1. children() 方法 children() 方法返回指定选择器匹配的子元素。只会匹配子元素,非子元素则不匹配。 语法:$(selector).c…

    jquery 2023年5月28日
    00
  • jQWidgets jqxTextArea popupZIndex属性

    让我们来详细讲解一下“jQWidgets jqxTextArea popupZIndex属性”。 什么是 jqxTextArea? jqxTextArea 是 jQWidgets 中的一个组件,用于创建一个多行文本输入框。 什么是 popupZIndex 属性? popupZIndex 属性用于设置弹出窗口的层级。当 jqxTextArea 内部弹出窗口被打…

    jquery 2023年5月12日
    00
  • jQuery UI Tooltips追踪选项

    以下是关于 jQuery UI Tooltips 追踪选项的详细攻略: jQuery UI Tooltips 追踪选项 可以使用追踪选项来控制工具提示小部件是否应该跟随鼠标移动。 语法 $(selector).tooltip({ track: true }); 参数 track: 一个布尔值,指示工具提示小部件是否应该跟随鼠标移动。默认为 false。 示例…

    jquery 2023年5月11日
    00
  • jQWidgets jqxGrid cellunselect事件

    jQWidgets 的 jqxGrid 组件提供了 cellunselect 事件,用于在单元格被取消选择时触发。本文将详细介绍 cellunselect 事件的使用方法,包括事件概述、示例以及注意事项。 cellunselect 事件概述 cellunselect 事件在单元格被取消选择时触发。该事件提供了一个回调函数,可以在单元格被取消选择时执行自定义代…

    jquery 2023年5月11日
    00
  • jQWidgets jqxRangeSelector snapToTicks属性

    首先讲解一下jQWidgets和jqxRangeSelector是什么: jQWidgets是一个基于jQuery的UI组件库,提供了各种各样的UI控件,例如表格、树形菜单、图表、日历等等。 jqxRangeSelector是jQWidgets提供的其中一种UI控件,主要用于指定一段范围,例如时间范围选择器。 jqxRangeSelector的snapToT…

    jquery 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部