jQuery 实时保存页面动态添加的数据的示例


Posted in jQuery onAugust 14, 2017

本文介绍了jQuery 实时保存页面动态添加的数据的示例,分享给大家,具体如下:

需求:用户填写的东西,必须要实时保存

分析:监听用户操作事件,如:change、keyup 等,向后端发送请求

实际情况:

  • 用户填写的表单,是通过 JavaScript 动态新增的,这就需要使用为动态新增元素绑定事件。
  • 发送请求给后端,取决于前面的必填项是否已经完整填写。
  • 必须区分用户是动态新增了填写栏目呢?还是在修改?
  • 当前事件对象是什么?怎么通过该对象获取用户输入的数据?
  • 用户多次修改同一栏目,必须传送带有 ID 的数据给后端。目的,用于识别是新增,还是更新操作。

动态新增代码:

// template() 是一个模板格式化函数
$('#modal_pl_content').html(template('modal_temp', {data:''}));

模板代码:

<script id="modal_temp" type="text/html">
<form class="cksd_comment_id">   
  <div class="col-sm-12 addID">
    <input type="hidden" name="comment_update_id" value="" />   
    <div class="col-sm-12 hr hr-18 dotted hr-dotted"></div>
    <div class="col-sm-3 form-group">        
      <label class="col-sm-3 control-label no-padding-right">评价ID</label>      
      <div class="col-sm-9"><input type="text" class="col-xs-12" name="commentID"></div>     
    </div>     
    <div class="col-sm-1 form-group">      
      <select name="star" onchange="checkIsInput(this)">        
        <option value="5">5</option>        
        <option value="4">4</option>        
        <option value="3">3</option>        
        <option value="2">2</option>        
        <option value="1">1</option>      
      </select>     
    </div>     
    <div class="col-sm-4 form-group">        
      <label class="col-sm-3 control-label no-padding-right">当前数量</label>      
      <div class="col-sm-8">        
        <div class="col-sm-5"><input type="text" class="col-xs-12" name="now_yes" onkeyup="is_intdata(this,this.value)" value="0"></div>          
        <label class="col-sm-1 control-label no-padding-left no-padding-right">of</label>        
        <div class="col-sm-5"><input type="text" class="col-xs-12" name="now_total" onkeyup="is_intdata(this,this.value)" value="0"></div>      
      </div>    
    </div>      
    <div class="col-sm-3 form-group">        
      <div class="col-sm-12">          
        <label class="col-sm-1 control-label no-padding-left no-padding-right">Yes</label>          
        <div class="col-sm-5"><input type="text" class="col-xs-12" name="add_yes" onkeyup="is_intdata(this,this.value)" value="0"></div>          
        <label class="col-sm-1 control-label no-padding-left no-padding-right">No</label>          
        <div class="col-sm-5"><input type="text" class="col-xs-12" name="add_no" readonly onkeyup="is_intdata(this,this.value)" value="0"></div>
      </div>      
    </div>    
    <div class="col-sm-1 form-group">总数: <br><span class="total_yes">0</span> of <span class="totals">0</span></div>     
    <div class="col-sm-1 form-group delbox"><button type="button" class="btn btn-danger btn-xs" onclick="delPlID(this)">删除</button></div>   
  </div>  
</form>
</script>

事件监听与发送请求代码:

$(document).on("change keyup", ".cksd_comment_id", function(event) {  
/*  var current = event.target.tagName.toLowerCase(); 
 if ((current != 'input') || (current != 'select')) {   
  event.preventDefault();  
 } 
*/  
 var praise_row = {}; 
 praise_row.cpid_a = $("[name='cpid_a']").val();  
 praise_row.pt_a = $("[name='pt_a']").find("option:selected").val(); 
 praise_row.dp_a = $("[name='dp_a']").find("option:selected").val();  
 praise_row.cptime_start = $("[name='cptime_start']").val();  
 praise_row.cptime_end = $("[name='cptime_end']").val();  
 praise_row.cpkeyword_a = $("[name='cpkeyword_a']").val();  
 praise_row.status = $("[name='cksd_status']").val();  
 if (praise_row.cpid_a && praise_row.pt_a && praise_row.dp_a && praise_row.cptime_start && praise_row.cptime_end) {   
  var comment_row = {};   
  $(this).find('input, select').each(function () {     
    var field = $(this).attr('name');     
    comment_row[field] = $(this).val();   
  });   
  var pp_id = $("input.cksd_praise_pid").val();   //console.log($(this));   
  var current_form = $(this);   
  var comment_id = $(this).children().find("[name='comment_update_id']").val();   
  var data = {};   
  if (pp_id) {     
    praise_row.id = pp_id;     
    comment_row.id = comment_id;     
    data = {praise: praise_row, comment: comment_row}   
  } else {     
    data = {praise: praise_row, comment: comment_row};   
  }   
  //console.log(data);   
  $.ajax({     
   type: 'post',     
   url: "<?php echo site_url('/praise/save_intime');?>",     
   data: data,     
   dataType: 'json'   
   }).done(function(res) {     
    if ((res.s == 0)) {      
     console.log($(this));      
     $('input.cksd_praise_pid').val(res.msg.p_id);      
     current_form.children().find("[name='comment_update_id']").val(res.msg.c_id);     
    }     
    console.log(res);   
  });  
}});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jquery实现图片平滑滚动详解
Mar 22 jQuery
jQuery实现百度登录框的动态切换效果
Apr 21 jQuery
jQuery简单绑定单个事件的方法示例
Jun 10 jQuery
jQuery复合事件用法示例
Jun 10 jQuery
jQuery实现checkbox的简单操作
Nov 18 jQuery
jQuery使用each遍历循环的方法
Sep 19 jQuery
详解jQuery中的getAll()和cleanData()
Apr 15 jQuery
jQuery实现高级检索功能
May 28 jQuery
jQuery zTree插件使用简单教程
Aug 16 jQuery
jQuery实现鼠标移入显示蒙版效果
Jan 11 jQuery
jQuery 选择器用法实例分析【prev + next】
May 22 jQuery
jQuery实现B2B网站后台管理系统侧导航
Jul 08 jQuery
jQuery Ajax 实现分页 kkpager插件实例代码
Aug 10 #jQuery
jquery.uploadView 实现图片预览上传功能
Aug 10 #jQuery
jquery对table做排序操作的实例演示
Aug 10 #jQuery
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 #jQuery
快速掌握jquery分页插件jqPaginator的使用方法
Aug 09 #jQuery
jQuery Easyui Treegrid实现显示checkbox功能
Aug 08 #jQuery
jQuery EasyUI的TreeGrid查询功能实现方法
Aug 08 #jQuery
You might like
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
2014/11/20 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
PHP输出日历表代码实例
2015/03/27 PHP
php正则表达式学习笔记
2015/11/13 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
如何实现浏览器上的右键菜单
2006/07/10 Javascript
jquery的颜色选择插件实例代码
2008/10/02 Javascript
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
jquery自定义表格样式
2015/11/23 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
使用原生js写ajax实例(推荐)
2017/05/31 Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
2017/09/02 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
Koa日志中间件封装开发详解
2019/03/09 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
Python判断直线和矩形是否相交的方法
2015/07/14 Python
python调用百度REST API实现语音识别
2018/08/30 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
如何基于Python + requests实现发送HTTP请求
2020/01/13 Python
戴尔英国官网:Dell英国
2017/05/27 全球购物
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
Java语言程序设计测试题判断题部分
2013/01/06 面试题
保护地球的宣传语
2015/07/13 职场文书
护士业务学习心得体会
2016/01/25 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
利用Python判断你的密码难度等级
2021/06/02 Python
springboot用户数据修改的详细实现
2022/04/06 Java/Android