首页 > 代码库 > 通过html()的方法获取文本内容, form表单组件显示的值与获取到的值不一致的问题

通过html()的方法获取文本内容, form表单组件显示的值与获取到的值不一致的问题

  我在通过 html()获取对应节点的内容,发现一个问题,获取到的 form表单组件的内容值是初始加载的值,而不是经过用户修改后的值。例如页面加载时组件<input type="text" value="http://www.mamicode.com/111111"/>,用户更改表单的值为 222222,通过父节点的html()方法获取这个组件,预期应该是<input type="text" value="http://www.mamicode.com/222222"/>,可结果却是初始时的样子<input type="text" value="http://www.mamicode.com/111111"/>。

  经过调试,发现通过用户更改表单的值时,是不会更改对应表单节点的html值,而是更改了缓存在内存中的属性值(例如 properties),浏览器会把这个属性值显示出来,而不是value属性的值(如果是textarea则是.html()的值).所以这个问题之所以出现,是因为我们误以为浏览器显示所用的值是存储在 一开始要浏览器显示值所使用的属性(如果是textarea则是.html()的值)。

  如果想使通过html()的获取的内容与显示的一致,可使用如下的几个方法

//更改html的值的一些方法示例
 $(".box_content input[type=‘text‘]").each(function(index, element) {//input text 标签
          $(this).attr("value",$(this).val());
  });
  $(".box_content textarea").each(function(index, element) {//textarea 标签
          $(this).html($(this).val());
 });   

然后执行 $(".box_content").html();  

 

注:当form表单使用reset的方法时,其实就是把 一开始浏览器显示值所使用的存储位置(input[text] 是value,textarea是.html())的值 重新赋予 保存用户修改表单值的属性(即val()方法获得的值的存放位置)

 

通过html()的方法获取文本内容, form表单组件显示的值与获取到的值不一致的问题