jquery mobile提供了一种可折叠的组件--data-role="collapsible",这种组件可以通过点击折叠块头部来展开/折叠块内的内容,详细组件说明可参考w3cshool可折叠块

在做一个小项目的时候,我有一个模块用到了可折叠块这个组件:初始页面时collapsible的标题是空的,只有用户在collapsible下面的文本框输入内容后,标题会跟文本框内容同步。

如下图所示,初始界面时,collapsible标题为空,只有在“险种”文本框中输入内容,collapsible标题才会产生变化。

对应的HTML代码如下:

  1. <div data-role="collapsible" id="collapsible">
  2. <h3 class="h3">&nbsp</h3>
  3. <div class="ui-field-contain" data-controltype="textinput">
  4. <label for="insurance_name">
  5. 险种
  6. </label>
  7. <input name="insurance_name" value="" type="text">
  8. </div>
  9. <div class="ui-field-contain" data-controltype="textinput">
  10. <label for="insurance_company">
  11. 投保公司
  12. </label>
  13. <input name="insurance_company" value="" type="text">
  14. </div>
  15. <div class="ui-field-contain" data-controltype="dateinput">
  16. <label for="insurance_date">
  17. 投保日期
  18. </label>
  19. <input name="insurance_date" value="" type="date">
  20. </div>
  21. <div class="ui-field-contain" data-controltype="textinput">
  22. <label for="insurance_year">
  23. 年期
  24. </label>
  25. <input name="year_period" value="" type="text">
  26. </div>
  27. <div class="ui-field-contain" data-controltype="textinput">
  28. <label for="insurance_cost">
  29. 年保费
  30. </label>
  31. <input name="year_cost" value="" type="text">
  32. </div>
  33. <div class="ui-field-contain" data-controltype="textarea">
  34. <label for="insurance_comment">
  35. 备注
  36. </label>
  37. <textarea name="insurance_comment"  placeholder=""></textarea>
  38. </div>
  39. </div>
  40. </div>

要想监听“险种”文本框值变化,就需要用到input和propertychange这两个事件,这两个事件是监听内容变化的。

  1. dom.bind('input propertychange', function() {
  2. //do something
  3. });

只要绑定好这两个内容变化事件,然后在事件体里面编写collapsible标题赋值代码即可搞定问题。

collapsible标题对应前面HTML代码中的"<h3></h3>"元素,但是通过$("h3").html(dom.val())这种形式给它赋值是错误的,这样会导致collapsible样式乱套。因为jquerymobile在上面html基础上动态创建了别的节点元素和样式,最终才会有这样折叠的效果。

可以通过浏览器查看最终的页面元素,你就会发现它与原本的HTML有很大的变化。


 上图<span class="ui-btn-text"></span>才是现实标题内容的节点。

所以要想给collapsible标题赋值,就需要找到class为ui-btn-text的节点。

  1. dom.parents("#collapsible").find(".h3").find(".ui-btn-text").html(dom.val());

完整的javascript代码应该这样来写:

  1. $(document).on("pageinit", "#insurer_list_page", function() {
  2. var dom = $("#collapsible-set").find("input[name='insurance_name']");
  3. dom.bind('input propertychange', function() {
  4. var value = dom.val();
  5. if($.isNull(value)){
  6. //输入内容为空,则以空格填充
  7. value = "&nbsp;";
  8. }
  9. dom.parents("#collapsible").find(".h3").find(".ui-btn-text").html(value);
  10. });
  11. });

jquerymobile之collapsible可折叠块标题内容动态显示的更多相关文章

  1. php用正则表达式获取网站的标题内容

    已知网站的网址,用php获取网站的内容. 编写正则表达式. 用preg_match_all函数获取标题内容. $url='http://www.m-ivi.com'; $content=file_ge ...

  2. php框架tp3.2.3和js写的微信分享功能心得,分享的标题内容图片自定义

    https://blog.csdn.net/weixin_42231483/article/details/81585322 最近用PHP的tp3.2.3框架和js写的微信分享功能心得,分享的标题内容 ...

  3. LabVIEW(十二):VI本地化-控件标题内容的修改

    一.对于一般LabVIEW的学习,很少遇到本地化的问题但是我们经常会遇到界面控件标题的显示问题.由于各个技术领域的专业性,往往用户对VI界面的显示有自己的要求,其中就包括控件的标题问题,这可以理解成本 ...

  4. 织梦DedeCMS使用SQL批量替换文章标题内容

    在使用织梦DedeCMS的过程中,出于伪原创或者其他的原因,我们需要对文档的内容.标题.描述等等进行同义词或者其他的替换.这个就是一个简单的织梦SQL语句操作的问题,No牛网在织梦DedeCMS常用S ...

  5. iOS 标题内容待定

    UITableView: UITableViewCell的声明文件.所包含的: UIView控件(contentView,作为其它元素的父控件) -- 容器 两个UILabel控件( textLabe ...

  6. 提取位于<title>...</title>内的文本标题内容

    #vim title.txt <title>nhlinkin</title> # cat title.txt  | sed 's:.*<title>\([^< ...

  7. 编辑bbs文章 获取前端标题内容 和前端内容的方法

  8. jQuery Mobile基础

    1.安装 在<head></head>标签里边写入以下内容 jQuery Mobile CDN: <head> <meta charset="utf ...

  9. JSP丶新闻发布会系统

    新闻发布会 项目所需要的一些实现类 servlet 工具类 1.实现登录功能 前端界面的代码 <form action="<%=path %>/LonginServlet& ...

随机推荐

  1. MYSQL 使用自定义表变量

    mysql  用户自定义表变量,ENGINE=MyISAM DEFAULT CHARSET=gb2312; 制定编码方式,防止乱码 DROP TABLE IF EXISTS p_temp; creat ...

  2. 使用码云gitee.com托管代码

    1.新建项目 可以看到团队资源管理器是这样的,已经在本地有存储库,所有更改可以保存本地 2.在码云上新建项目 项目名称必填,其它项根据情况填写 3.复制项目地址关联到本地存储库 填写码云的项目地址,发 ...

  3. Centos6.6 安装基于系统认证的vsftp服务

    一.介绍 vsftp是一款文件服务器软件,在文件共享,代码更新,文件备份中也是经常用到,以下是基本安装环境: 1)CentOS6.6 2)vsftpd-2.2.2 二.安装 $ yum install ...

  4. Codeforces_738B

    B. Spotlights time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  5. js 时间 Fri Dec 12 2014 08:00:00 GMT+0800

    第一种var d = new Date('Fri Dec 12 2014 08:00:00 GMT+0800'); ) + '-' + d.getDate() + ' ' + d.getHours() ...

  6. form:input 标签使用

    <form:input path="suplier" htmlEscape="false" maxlength="50" id=&qu ...

  7. How To:防火墙规则去重

    主要命令 iptables-save| awk ' !x[$0]++ | iptables-restore 演示: [root@testname ~]# iptables -vL Chain INPU ...

  8. Going Home HDU - 1533(最大费用最小流)

    On a grid map there are n little men and n houses. In each unit time, every little man can move one ...

  9. Django REST framework 自定义(认证、权限、访问频率)组件

    本篇随笔在 "Django REST framework 初识" 基础上扩展 一.认证组件 # models.py class Account(models.Model): &qu ...

  10. 百度编辑器ueditor1.4.3配置记录

    我从官网下载的php文件,但是图片上传不能用,后来查找资料,打开ueditor下的php/controller.php,(其他环境选对应的文件夹)把时区设置按如下改个字母大小写,再打开该文件就正确返回 ...