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. 如何在Linuxt系统下运行maven项目

    如何在Linuxt系统下运行maven项目 我们知道现在利用MAVEN来管理JAVA项目是非常常见的.比如公司一般都有一个自己的MAVEN仓库,通过MAVEN仓库来解决我们的项目依赖,更加方便的构建项 ...

  2. java攻城狮之路--复习JDBC

    1.JDBC中如何获取数据库链接Connection? Driver 是一个接口: 数据库厂商必须提供实现的接口. 能从其中获取数据库连接. 可以通过 Driver 的实现类对象获取数据库连接. 1. ...

  3. vim之补全1(完全个人定制版)

    关于vim的补全最初的感觉是蛋疼, 真正的蛋疼! 由于在接触linux之前曾经在windows下面学过一段时间软件开发, 那时使用的是vs2010, 现在看来虽然vs启动相当的慢, 编辑器的定制和配置 ...

  4. 在把table表格中的数据导出到Excel的时候,以科学计数法显示位数多的数字时怎么解决?

    sbHtml.AppendFormat("<td> {0}</td>", data[i].IDcard.ToString()); sbHtml.Append ...

  5. shouldComponentUpdate不能直接比较object

    凡是参阅过react官方英文文档的童鞋大体上都能知道对于一个组件来说,其state的改变(调用this.setState()方法)以及从父组件接受的props发生变化时,会导致组件重渲染,正所谓&qu ...

  6. mysql5.7初始化密码报错ERROR1820(HY000):YoumustresetyourpasswordusingALTERUSERstateme

    1,mysql5.6是密码为空直接进入数据库的,但是mysql5.7就需要初始密码 cat /var/log/mysqld.log | grep password 或者:grep 'temporary ...

  7. Java中Math对象的属性与方法

    Math.sqrt() ——————>计算平方根Math.cbrt()————————>计算立方根Math.pow(a, b)——————————>计算a的b次方Math.max( ...

  8. Weex框架源码分析(Android)(一)

    一.weexSDK初始化流程 WXSDKEngine.initialize(Application application,InitConfig config); //WXSDKEngine的init ...

  9. Django - 一对多数据示例

    1.增加Host -id 可以在模版中增加代码: 备注: 1.counter (从1开始) 2.counter0(从0开始) 3.revcounter(倒序) 4.revcounter0(倒序从0开始 ...

  10. 51nod1006 -最长公共子序列Lcs【动态规划】

    给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最 ...