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. AIDL跨进程通信报Intent must be explicit

    在Android5.0机子上采用隐式启动来调试AIDL时,会出现Intent must be explicit的错误,原因是5.0的机子不允许使用隐式启动方式,解决的方法是:在启动intent时添加i ...

  2. MySQL 多表批量更新

    使用inner join 进行表更新sql 与mysql 的区别: SQL UPDATE W SET W.字段=新数据 FROM 表a W INNER JOIN 表B d ON W.wID=D.wid ...

  3. JS——stye属性

    1.样式少的时候使用 this.parentNode.style.backgroundColor="yellow"; 2.style是对象 console.log(box.styl ...

  4. [Windows Server 2008] Ecshop安全设置

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:ECSHO ...

  5. 2016.01.05 DOM笔记(一) 查找元素

    DOM节点的种类 元素和标签是一个意思,例如<body>标签或者称为<body>元素 节点DOM的节点分为三类  元素节点,文本节点,属性节点 例如 <div id=‘b ...

  6. iOS crash log 解析 symbol address = stack address - slide 运行时获取slide的api 利用dwarfdump从dsym文件中得到symbol

    概述: 为什么 crash log 内 Exception Backtrace 部分的地址(stack address)不能从 dsym 文件中查出对应的代码? 因为 ASLR(Address spa ...

  7. js获取图片信息(二)-----js获取img的height、width宽高值为0

    首先,创建一个图片对象: var oImg= new Image(); oImg.src = "apple.jpg"; 然后我们打印一下图片的信息: console.log(oIm ...

  8. * 获取页面参数 * @return 参数打印

    /** * 获取页面参数 * @return 参数打印 */ GetUrlParam: function(paraName) { var url = document.location.toStrin ...

  9. DECLARE_MESSAGE_MAP( )

    DECLARE_MESSAGE_MAP( ) 说明: 你的程序中的每一个CCmdTarget的派生类都可以提供一个消息映射以处理消息.在你的类声明的末尾使用DECLARE_MESSAGE_MAP宏.然 ...

  10. swift-延时加载函数

    //延时加载函数 func delayLoad(){ let time: NSTimeInterval = 2.0 let delay = dispatch_time(DISPATCH_TIME_NO ...