现实代码如下所示:

3、遮蔽/呈现输入框

你是还是不是还会有三个疑惑:假诺大家必要自定义bootstrapTable的风浪如何是好?不能够通过后台的viewmodel传过来吧?

若是我们还想深刻学习,能够点击这里拓展学习,再为大家附多少个优良的专项论题:Bootstrap学习课程
Bootstrap实战教程

<script language="JavaScript"> 
function checkid(iden,year,month,day){ 
if (iden.value.length==15) { 
if ((iden.value.lastIndexOf(month.value+day.value))==8) { 
return true; 
} 
return false; 
} 
if (iden.value.length==18) { 
if ((iden.value.indexOf(year.value+month.value+day.value))==6) { 
return true; 
} 
return false; 
} 
return false; 
} 
function isCharsInBag (s, bag) 
{ 
var i; 
for (i = 0; i < s.length; i++) 
{ 
var c = s.charAt(i); 
if (bag.indexOf(c) == -1) return false; 
} 
return true; 
} 
function isEmpty(s) 
{ 
return ((s == null) || (s.length == 0)) 
} 
function isWhitespace (s) 
{ 
var whitespace = " \t\n\r"; 
var i; 
for (i = 0; i < s.length; i++) 
{ 
var c = s.charAt(i); 
if (whitespace.indexOf(c) >= 0) 
{ 
return true; 
} 
} 
return false; 
} 
function isEmail (s,t) 
{ 
if (isEmpty(s)) 
{ 
window.alert("输入的E-mail地址不能为空,请输入!"); 
mobj = eval(t); 
mobj.focus(); 
mobj.select(); 
return false 
} 
if (isWhitespace(s)) 
{ 
window.alert("输入的E-mail地址中不能包含空格符,请重新输入!"); 
mobj = eval(t) 
mobj.focus() 
mobj.select() 
return false; 
} 
var i = 1; 
var len = s.length; 
if (len > 50) 
{ 
window.alert("email地址长度不能超过50位!"); 
mobj = eval(t) 
mobj.focus() 
mobj.select() 
return false; 
} 
pos1 = s.indexOf("@"); 
pos2 = s.indexOf("."); 
pos3 = s.lastIndexOf("@"); 
pos4 = s.lastIndexOf("."); 
if ((pos1 <= 0)||(pos1 == len)||(pos2 <= 0)||(pos2 == len)) 
{ 
window.alert("请输入有效的E-mail地址!"); 
mobj = eval(t) 
mobj.focus() 
mobj.select() 
return false; 
} 
else 
{ 
if( (pos1 == pos2 - 1) || (pos1 == pos2 + 1) 
|| ( pos1 != pos3 ) 
|| ( pos4 < pos3 ) ) 
{ 
window.alert("请输入有效的E-mail地址!"); 
mobj = eval(t) 
mobj.focus() 
mobj.select() 
return false; 
} 
} 
if ( !isCharsInBag( s, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-_@")) 
{ 
window.alert("email地址中只能包含字符ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-_@\n" + "请重新输入" ); 
mobj = eval(t) 
mobj.focus() 
return false; 
} 
return true; 
} 
function isnumber(str){ 
var digits="1234567890"; 
var i=0; 
var strlen=str.length; 
while((i<strlen)){ 
var char=str.charAt(i); 
if(digits.indexOf(char)==-1)return false;i++; 
} 
return true; 
} 
function isnumbercode(str){ 
var digits="1234567890-/"; 
var i=0; 
var strlen=str.length; 
while((i<strlen)){ 
var char=str.charAt(i); 
if(digits.indexOf(char)==-1)return false;i++; 
} 
return true; 
} 
</script> 
<script language=javascript> 
function checkForm(theform){ 
if (document.frm.companyname.value.length==0){ 
alert("单位名称不能为空。"); 
mobj = eval("document.frm.companyname"); 
mobj.focus() 
mobj.select() 
return false; 
} 
if (document.frm.address.value.length==0){ 
alert("单位地址不能为空"); 
mobj = eval("document.frm.address"); 
mobj.focus() 
mobj.select() 
return false; 
} 
if (document.frm.invest.value.length==0){ 
alert("投资额不能为空"); 
mobj = eval("document.frm.invest"); 
mobj.focus() 
mobj.select() 
return false; 
} 
if (document.frm.codeornumber.value.length==0){ 
alert("法人代码证书号或营业执照编号不能为空"); 
mobj = eval("document.frm.codeornumber"); 
mobj.focus() 
mobj.select() 
return false; 
} 
if (document.frm.linkman.value.length==0){ 
alert("联系人不能为空"); 
mobj = eval("document.frm.linkman"); 
mobj.focus() 
mobj.select() 
return false; 
} 
if (document.frm.linkmanjob.value.length==0){ 
alert("联系人职位不能为空"); 
mobj = eval("document.frm.linkmanjob"); 
mobj.focus() 
mobj.select() 
return false; 
} 
if (document.frm.phone.value.length==0){ 
alert("电话不能为空"); 
mobj = eval("document.frm.phone"); 
mobj.focus() 
mobj.select() 
return false; 
} 
if (document.frm.email.value=='') { 
window.alert ("请输入您的E-mail地址 !") 
mobj = eval("document.frm.email"); 
mobj.focus() 
mobj.select() 
return false 
} 
if ( !isEmail(document.frm.email.value,document.frm.email) ) 
return false 
if (document.frm.introduction.value.length==0){ 
alert("公司简介不能为空"); 
mobj = eval("document.frm.introduction"); 
mobj.focus() 
mobj.select() 
return false; 
} 
if (document.frm.positionname.value.length==0){ 
alert("职位名称不能为空"); 
mobj = eval("document.frm.positionname"); 
mobj.focus() 
mobj.select() 
return false; 
} 
if (document.frm.jobaddress.value.length==0){ 
alert("工作地点不能为空"); 
mobj = eval("document.frm.jobaddress"); 
mobj.focus() 
mobj.select() 
return false; 
} 
if (document.frm.jobfunction.value.length==0){ 
alert("工作职责不能为空"); 
mobj = eval("document.frm.jobfunction"); 
mobj.focus() 
mobj.select() 
return false; 
} 
if (document.frm.positionrequre.value.length==0){ 
alert("职位要求不能为空"); 
mobj = eval("document.frm.positionrequre"); 
mobj.focus() 
mobj.select() 
return false; 
} 
if (document.frm.salary.value.length==0){ 
alert("待遇不能为空"); 
mobj = eval("document.frm.salary"); 
mobj.focus() 
mobj.select() 
return false; 
} 
} 
</script> 
JS代码判断集锦(之二) 

            12345下一页阅读全文

您可能感兴趣的文章:JS正则表达式判断有效数实例代码javascript判断回文数详解及实现代码js判断手机号是否正确并返回的实现代码js判断iframe中元素是否存在的实现代码使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码

1、获取/赋值input输入值

knockout.edit.js代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <!-- Bootstrap -->
 <link href="resource/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
 <link href="resource/bootstrap/css/bootstrap-theme.min.css" rel="stylesheet" media="screen">
 <title>JS框架学习</title>

 </head>
 <body onload="loadUserDatas()">
 <div class="container">
 <table class="table" id="table">
 <caption><h2>练习一</h2></caption>
 <caption>
  <button type="button" class="btn btn-info" id="user_add" data-toggle="modal" 
 data-target="#myModal" onclick="optionUserData(this);">新增</button>
  <button type="button" class="btn btn-info" id="user_delete" onclick="optionUserData(this);">删除</button>
  <button type="button" class="btn btn-info" id="user_edit" data-toggle="modal" 
 data-target="#myModal" onclick="optionUserData(this);">编辑</button>
  <button type="button" class="btn btn-info" id="user_find" onclick="optionUserData(this);">查询</button>
  <input type="text" id="s_code" placeholder="按工号查询" style="width: 80px;">
  <input type="text" id="s_userName" placeholder="按姓名查询" style="width: 80px;">
  <input type="text" id="s_all" placeholder="全文搜索" style="width: 80px;">
 </caption>
 <thead>
  <tr>
  <th>序号</th>
  <th>工号</th>
  <th>姓名</th>
  <th>性别</th>
  <th>密码</th>
  <th>年龄</th>
  <th>出生日期</th>
  </tr>
 </thead>
 <tbody id="tbody">
 </tbody>
 </table>

 <!-- 模态框(Modal) -->
 <div class="modal hide" id="myModal" role="dialog" >
 <div class="modal-dialog">
  <div class="modal-content">
  <div class="modal-header">
  <button type="button" class="close" data-dismiss="modal" aria-hidden="true"> 
   ×
  </button>
  <h4 class="modal-title" id="myModalLabel">
   新增用户
  </h4>
  </div>
  <div class="modal-body" id="modal-body">
  <label for="name">工号:</label>
   <input type="text" class="form-control" id="m_code" placeholder="请输入工号">
   <label for="name">姓名:</label>
   <input type="text" class="form-control" id="m_userName" placeholder="请输入姓名">
   <label for="name">性别:</label>
   <input type="text" class="form-control" id="m_sex" placeholder="请输入性别">
   <label for="name">密码:</label>
   <input type="text" class="form-control" id="m_passWord" placeholder="请输入密码">
   <label for="name">年龄:</label>
   <input type="text" class="form-control" id="m_age" placeholder="请输入年龄">
   <label for="name">出生日期:</label>
   <input type="text" class="form-control" id="m_birthday" placeholder="请输入出生日期">
  </div>
  <div class="modal-footer">
  <button type="button" class="btn btn-default" 
   data-dismiss="modal">保存
  </button>
  <button type="button" class="btn btn-primary">提交更改</button>
  </div>
  </div><!-- /.modal-content -->
 </div><!-- /.modal -->
 </div>
 <!-- 这里需要引入相关的js,很重要,请记住 -->
 <script type="text/javascript" src="resource/jquery/jquery.js"></script>
 <script type="text/javascript" src="resource/bootstrap/js/bootstrap.min.js"></script>
 <script type="text/javascript" src="index.js"></script>
 </body>
 </html>
 复制代码
 复制代码
 //存放所有用户
 var users = users || {};
 //操作类型
 var operateType = "";
 //存放搜索对象
 var searchUsers = searchUsers || {};
 //用户构造方法
 var User = {
  Create:function(code,userName,sex,passWord,age,birthday){
  this.code = code;
  this.userName = userName;
  this.sex = sex;
  this.passWord = passWord;
  this.age = age;
  this.birthday = birthday;
  },
  //添加用户
  addUserData:function(){
  if(this.code != ""){
   users[this.code] = this;
  }
  },
  //删除用户
  deleteUserData:function (){
  for(var i in users){
   if(this.code == users[i].code){
   delete users[i];
   }
  }
  },
  //编辑用户
  editUserData:function(){
  for(var i in users){
   if(this.code == users[i].code){
   users[i].userName = this.userName;
   users[i].sex = this.sex;
   users[i].passWord = this.passWord;
   users[i].birthday = this.birthday;
   users[i].age = this.age;
   }
  }
  },
  //查找用户
  findUserData:function(data){

  for(var i in users){
   if(data.code.indexOf(users[i].code) >= 0 || 
    data.userName.indexOf(users[i].userName) >= 0){
   searchUsers[users[i].code] = users[i];
   refreshDatas(searchUsers);
   }
  }
  }
 };

 function New(aClass,aParams){
 function new_(){
  aClass.Create.apply(this,aParams);
 }
 new_.prototype = aClass;
 return new new_();
 }

 //bootstrap模态框事件
 $('#myModal').on('hide.bs.modal', function () {
 // 执行一些动作...
 var inputElements = this.getElementsByTagName("input");
 var userArr = [];
 for(var i=0;i<inputElements.length;i++){
  userArr[i] = inputElements[i].value;
 }
 var user = New(User,userArr);
 //添加操作
 if(operateType == "add"){
  user.addUserData();
  refreshDatas(users);
 //编辑操作
 }else if(operateType == "edit"){
  user.editUserData();
  refreshDatas(users);
 }
 });

 /**
 * 首次加载页面执行方法
 */
 function loadUserDatas(){
 var userArray = initUserDatas();
 addRowData(userArray);
 refreshDatas(users);

 }
 /**
 * 初始化用户数据
 */
 function initUserDatas(){
 var initUser1 = New(User,["1001","小兰","女","1234","13","1991-1-1"]);
 var initUser2 = New(User,["1002","小毅","男","1234","13","1991-1-1"]);
 var initUser3 = New(User,["1003","兰花","女","1234","13","1991-1-1"]);
 var initUser4 = New(User,["1004","兰儿","女","1234","13","1991-1-1"]);
 users[initUser1.code] = initUser1;
 users[initUser2.code] = initUser2;
 users[initUser3.code] = initUser3;
 users[initUser4.code] = initUser4;
 return users;
 }

 /**
 * 往表格添加一行html数据
 */
 function addRowData(datas){
 var tbodyElement = document.getElementById("tbody");
 var html = "";
 var color = "warning";
 var flag = true;
 for(var i in datas){
  if(flag){
  color = "info";
  }else{
  color = "warning";
  }
  html = html + "<tr class='"+ color +"'><td style='width:30px;'><input type='checkbox'></td><td id='code'>"
   + datas[i].code +"</td><td id='userName'>"
   + datas[i].userName +"</td><td id='sex'>"
   + datas[i].sex +"</td><td id='passWord'>"
   + datas[i].passWord +"</td><td id='age'>"
   + datas[i].age +"</td><td id='birthday'>"
   + datas[i].birthday +"</td>" 
   +"</tr>";

  flag = !flag;//颜色转换
 }
 tbodyElement.innerHTML = html;
 }
 /**
 * 刷新用户数据
 */
 function refreshDatas(datas){
 addRowData(datas);
 };

 /**
 * 收集一行数据
 */
 function collectionRowData(param){
 var tdElement = param.getElementsByTagName("td");
 var userArr = [];
 for(var i=1;i<tdElement.length;i++){
  var temp = tdElement[i].textContent;
  userArr[i-1] = temp;
 }
 var user = New(User,userArr);
 return user;
 }
 /**
 * 用户操作方法
 */
 function optionUserData(param){
 //获得操作类别
 var optionType = param.getAttribute("id");
 if(optionType == "user_add"){
  operateType = "add";
 }else if(optionType == "user_delete"){
  var checkRowData = isCheckedData();
  var user = collectionRowData(checkRowData);
  user.deleteUserData();
  refreshDatas(users);
 }else if(optionType == "user_edit"){
  operateType = "edit";
  var checkRowData = isCheckedData();
  var user = collectionRowData(checkRowData);
  var modal_body = document.getElementById("modal-body");
  var inputElements= modal_body.getElementsByTagName("input");
  for(var i=0;i<inputElements.length;i++){
  var temp = inputElements[i].id.substring(2,inputElements[i].id.length)
  inputElements[i].value = user[temp];
  }
 }else if(optionType == "user_find"){
  var s_code = document.getElementById("s_code").value;
  var s_userName = document.getElementById("s_userName").value;
  var s_all= document.getElementById("s_all").value;
  //搜索数据
  var s_data = s_data || {};
  s_data.code = s_code;
  s_data.userName = s_userName;
  s_data.all = s_all;
  var user = New(User,[]);
  user.findUserData(s_data);
 }else{

 }
 }

 /**
 * 是否选中数据,返回选中数据的行
 */
 function isCheckedData(){
 var tbodyElement =document.getElementById("tbody");
 var trElements = tbodyElement.getElementsByTagName("tr");
 var flag = false;
 for(var i=0;i<trElements.length;i++){
  var inputElement = trElements[i].getElementsByTagName("input")[0];
  if(inputElement.checked){
  flag = true;
  return trElements[i];
  }
 }
 if(!flag){
  alert("请选择一条记录!");
  $('#myModal').unbind("on");
 }
 }

最新议论

2、获取/赋值textarea文本域输入值

1、ActionResult的实现

永利集团304手机版 1

  • JS
  • 代码
  • 判断

动作处理页面active_action.php

demo的贯彻依旧后续上次的部门管理职能。以下实行通过数量流一向表明。

你可能感兴趣的小说:

  • BootstrapTable+KnockoutJS相结合贯彻增加和删除改查消除方案(三)多个Viewmodel消除增加和删除改查
  • BootstrapTable+KnockoutJS自定义T4模板急速转移增加和删除改查页面
  • BootstrapTable与KnockoutJS相结合贯彻增加和删除改查成效【二】
  • BootstrapTable与KnockoutJS相结合贯彻增删改查作用【一】
  • BootStrap和jQuery相结合贯彻可编辑表格
  • Angular.js与Bootstrap相结合贯彻表格分页代码
  • JS表格组件神器bootstrap
    table详解(基础版)
  • BootStrap完毕带有增加和删除改查功用的表格(DEMO详解)

连带小说

  • 永利集团304手机版 2
    js数组中怎么着随机抽出一个值

    那篇小说首要介绍了js数组中哪些随机抽取三个值,须要的朋友能够参照下

    2014-06-06

  • 永利集团304手机版 3
    fileupload控件
    文件类型客户端验证完成代码

    客户端JS验证fileupload控件,设置只允许特定的文件类型
    ,当然服务器端更要认清啊。这里是为着后台验证的更顺畅。

    2009-11-11

  • 永利集团304手机版 4
    详解JavaScript的表达式与运算符

    这篇小说首要介绍了JavaScript的表明式与运算符,供给的相恋的人可以参考下

    2015-11-11

  • 永利集团304手机版 5
    至于HTTP传输中gzip压缩的神秘研究分析

    Gzip是一种流行的文本压缩算法,现在的选取特别科学普及,特别是在Linux平台。下边那篇文章主要给我们介绍了有关HTTP传输中gzip压缩的连锁材料,文中介绍的百般详细,供给的爱人能够参见借鉴,下面随着作者来一齐念书学习吧。

    2018-01-01

  • 永利集团304手机版 6
    用javascript猎取传递参数的个数的代码

    用javascript获得传递参数的个数的代码…

    2007-10-10

  • 永利集团304手机版 7
    javascript
    对象属性property与成分属性attribute的浏览器支持

    对象属性property与成分属性attribute的浏览器支持情状,我们能够参照他事他说加以考察下。

    2010-10-10

  • 永利集团304手机版 8
    bootstrap响应式工具使用详解

    那篇文章首要介绍了bootstrap响应式工具使用的相关材质,具备一定的参谋价值,感兴趣的同伙们能够参见一下

    2017-11-11

  • 永利集团304手机版 9
    JS达成居民身份证输入框的输入效果

    那篇小说首要介绍了JS完结身份ID输入框的输入效果,极度不利,具备参照他事他说加以考察借鉴价值,必要的爱侣可以参照他事他说加以考察下

    2017-08-08

  • 永利集团304手机版 10
    BootstrapTable与KnockoutJS相结合贯彻增删改查功能【二】

    那篇文章首要介绍了BootstrapTable与KnockoutJS相结合贯彻增加和删除改查功用【二】的连带资料,特别具备参照他事他说加以考察价值,感兴趣的爱侣一同学学啊

    2016-05-05

  • 永利集团304手机版 11
    运用ngrok+express解决地点景况中微信接口调节和测量检验难题

    那篇小说首要介绍了采取ngrok+express解决本地意况中微信接口调节和测验难题,必要的相爱的人能够参照他事他说加以考察下

    2018-02-02

您只怕感兴趣的稿子:

  • BootStrap实现带有增加和删除改查成效的表格(DEMO详解)
  • BootstrapTable+KnockoutJS相结合贯彻增删改查化解方案(三)八个Viewmodel化解增加和删除改查
  • 永利集团304手机版,BootstrapTable+KnockoutJS自定义T4模板快快速生成成增删改查页面
  • JS结合bootstrap完结基本的增加和删除改查功效
  • BootstrapTable与KnockoutJS相结合贯彻增加和删除改查作用【二】
  • BootstrapTable与KnockoutJS相结合贯彻增加和删除改查成效【一】

4、要是查询条件以及编辑的性能之中存在select下拉框成分,大概还亟需封装下拉框的datasourse等品质,这一有个别是老大普及的,等博主整理好demo后将那块加进去。

如上便是本文的全体内容,希望对大家的读书抱有帮助,也可望大家多多协助脚本之家。

利用jquery与bootstrap达成了三个比较轻便但作用齐全的增加和删除改查功能的后台管理页面,即便只是二个CRUD页面,但麻雀虽小五脏俱全,JS常用的效果与利益都用到了,本例用原生的jquery与bootstrap同盟使用,不思量JS的重构性及包裹,该例子零耦合,开箱即用。

地点的三个viewmodel化解了询问和删除的职能,可是新扩大和编写制定还索要另二个viewmodel的支撑。上面来拜会编辑的卷入完结。

上边是具体的例证,

<?php

/**
 * 获取提交的数据
 *
 */

$act    = $_POST['act'];
$id    = $_POST['id'];
$user_id  = (int)$_POST['user_id'];
$form_data = $_POST['form_data'];
$param_arr = array();


// 获取到的数据格式为 “foo=bar&baz=boom&cow=milk&php=hypertext+processor”
// http_build_query 的数据形式用parse_str解析为数组格式
parse_str($form_data, $param_arr);

// 备注中文处理
$param_arr['remark'] = iconv("utf-8", "gbk", trim($param_arr['remark']));


switch($act)
{
  case "add":

    // 添加入库操作
    // ...
    // ...
    break;

  case "edit":

    // 编辑操作
    $user_id = $param_arr['user_id'];

    // ...
    break;

  case "get":

    // 返回详细的用户信息
    // get($user_id);
    echo $ret;
    exit();
    break;
  case "del":
    // 删除
    // delete();
    break;
}

echo $ret > 0 ? 1 : 0;

真的,从后台是无可奈何传递js事件措施的,所以要求大家在前面三个自定义事件的管理办法,比方大家可以如此:

化解难点
一旦你早就对JS有一定基础
只要你对bootstrap有必然基础

$("#my_input").hide();
$("#my_input").show();

那正是说就能够在提交的时候自动举行验证:

效果图:

先看Demo:

•self.bootstrapTable.refresh():这一句的意思是刷新表格数据,它事实上是调用的bootstrapTable的refresh方法,只然则博主在knockout.bootstraptable.js文件之中对它进行了简易封装。

带有八个文本(index.jsp  和  index.js)

$("#my_textarea").val();// 获取
$("#my_textarea").val("my_textarea");// 赋值

// 文本域显示默认值,这个和input不一样,不能通过value赋默认值
<textarea name="my_textarea" readonly="true"style="width:100px;height:30px;">这里是文本域默认的内容</textarea>
(function ($) {
//向ko里面新增一个bootstrapTableViewModel方法
ko.bootstrapTableViewModel = function (options) {
var that = this;
this.default = {
toolbar: '#toolbar', //工具按钮用哪个容器
queryParams: function (param) {
return { limit: param.limit, offset: param.offset };
},//传递参数(*)
pagination: true, //是否显示分页(*)
sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
pageNumber: 1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*)
pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
method: 'get',
search: true, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
strictSearch: true,
showColumns: true, //是否显示所有的列
cache:false,
showRefresh: true, //是否显示刷新按钮
minimumCountColumns: 2, //最少允许的列数
clickToSelect: true, //是否启用点击选中行
showToggle: true,
};
this.params = $.extend({}, this.default, options || {});
//得到选中的记录
this.getSelections = function () {
var arrRes = that.bootstrapTable("getSelections")
return arrRes;
};
//刷新
this.refresh = function () {
that.bootstrapTable("refresh");
};
};
//添加ko自定义绑定
ko.bindingHandlers.bootstrapTable = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
//这里的oParam就是绑定的viewmodel
var oViewModel = valueAccessor();
var $ele = $(element).bootstrapTable(oViewModel.params);
//给viewmodel添加bootstrapTable方法
oViewModel.bootstrapTable = function () {
return $ele.bootstrapTable.apply($ele, arguments);
}
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
}
};
})(jQuery); 

提出难题:如何运用原生的js达成基本的增加和删除改查功用???

$("#my_input").hide();
$("#my_input").show();

•queryCondition:页面包车型客车查询条件。

二、示例代码

代码释疑:由于大家加了印证组件bootstrapValidator,所以供给援用相关js和css。knockout.edit.js那个文件重大封装了编写页面包车型地铁习性和事件绑定。重点来拜谒那一个js的兑今世码。

一、用到的Jquery功能

[HttpPost]
public JsonResult Add(Department oData)
{
DepartmentModel.Add(oData);
return Json(new { }, JsonRequestBehavior.AllowGet);
}
[HttpPost]
public JsonResult Update(Department oData)
{
DepartmentModel.Update(oData);
return Json(new { }, JsonRequestBehavior.AllowGet);
}
[HttpPost]
public JsonResult Delete(List<Department> oData)
{
DepartmentModel.Delete(oData);
return Json(new { }, JsonRequestBehavior.AllowGet);
} 

演示前端active_list.html代码:

   public ActionResult Edit(Department model)
{
var oResModel = new
{
editModel = model,
urls = new
{
submit = model.id == 0 ? "/Department/Add" : "/Department/Update"
}
};
return View(oResModel);
} 
$("#my_id").val();// 获取
$("#my_id").val(“user_id");// 赋值
<form id="formEdit">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
<h4 class="modal-title" id="myModalLabel">操作</h4>
</div>
<div class="modal-body">
<div class="form-group">
<label for="txt_departmentname">部门名称</label>
<input type="text" name="Name" data-bind="value:editModel.Name" class="form-control" placeholder="部门名称">
</div>
<div class="form-group">
<label for="txt_departmentlevel">部门级别</label>
<input type="text" name="Level" data-bind="value:editModel.Level" class="form-control" placeholder="部门级别">
</div>
<div class="form-group">
<label for="txt_des">描述</label>
<input type="text" name="Des" data-bind="value:editModel.Des" class="form-control" placeholder="描述">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
<button type="submit" class="btn btn-primary">保存</button>
</div>
</div>
</div>
</form>
<link href="~/Content/bootstrapValidator/css/bootstrapValidator.css" rel="stylesheet" />
<script src="~/Content/bootstrapValidator/js/bootstrapValidator.js"></script>
<script src="~/scripts/extensions/knockout.edit.js"></script>
<script type="text/javascript">
$(function () {
     var editData = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model));
ko.bindingEditViewModel(editData, {
Name: {
validators: {
notEmpty: {
message: '名称不能为空!'
}
}
}
}); 
});
</script> 

4、获取表单form输入的多少

3、js封装

<!DOCTYPE html>
<html>
<head>
  <meta charset="gb2312">
  <title>活动列表</title>
  <link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
  <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
  <script src="http://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>

  <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<script>
  function show_upload_info(img_url,title,n)
  {
    //document.getElementById("img_view"+n).src = img_url;
    //document.getElementById("img_view"+n).style.display = '';
    //document.getElementById("img_url"+n).value = img_url;
    $("#img_url"+n).val(img_url);
    $("#img_view"+n).attr('src', img_url);
  }

  function act_resize_img(imgObj, rectWidth, rectHeight, fixIeBug)
  {
    try
    {
      if(!fixIeBug) fixIeBug = true;
      //修正在IE运行下的问题
      if( (imgObj.width==0 || imgObj.height==0) && fixIeBug ) {
        var timer = setInterval(function(){
          act_resize_img(imgObj, rectWidth, rectHeight, false);
          clearInterval(timer);
        }, 1000);
        return;
      }
      var x = imgObj.width>rectWidth ? rectWidth : imgObj.width;
      var y = imgObj.height>rectHeight ? rectHeight : imgObj.height;
      var scale  = imgObj.width/imgObj.height;

      if( x>y*scale ) {
        imgObj.width  = Math.floor(y*scale);
        imgObj.height  = y;
      }else {
        imgObj.width  = x;
        imgObj.height  = Math.floor(x/scale);
      }
      imgObj.style.width = imgObj.width+"px";
      imgObj.style.height = imgObj.height+"px";

      if (typeof(imgObj.onload)!='undefined')
      {
        imgObj.onload=null;
      }
    }
    catch(err)
    {

    }
  }

  $(document).ready(function() {
    // 配置日期事件
    $("#expire_time").focus(function () {
      WdatePicker({'dateFmt': 'yyyy-MM-dd HH:mm:ss'});
    });
  });

  // 提交表单
  function delete_info(active_id)
  {
    if(confirm("确认删除吗?"))
    {
      if(!active_id)
      {
        alert('Error!');
        return false;
      }

      $.ajax(
          {
            url: "action/active_action.php",
            data:{"active_id":active_id, "act":"del"},
            type: "post",
            beforeSend:function()
            {
              $("#tip").html("正在处理...");
              return true;
            },
            success:function(data)
            {
              if(data > 0)
              {
                alert('操作成功');
                $("#tip").html("恭喜,删除成功!");


                location.reload();
              }
              else
              {
                $("#tip").html("失败,请重试");
                alert('操作失败');
              }
            },
            error:function()
            {
              alert('请求出错');
            },
            complete:function()
            {
              // $('#tips').hide();
            }
          });

    }

    // var form_data = new Array();
    return false;
  }

  // 编辑表单
  function get_edit_info(active_id)
  {
    if(!active_id)
    {
      alert('Error!');
      return false;
    }
    // var form_data = new Array();

    $.ajax(
        {
          url: "action/active_action.php",
          data:{"active_id":active_id, "act":"get"},
          type: "post",
          beforeSend:function()
          {
            // $("#tip").html("正在处理...");
            return true;
          },
          success:function(data)
          {
            if(data)
            {
              // 解析json数据
              var data = data;
              var data_obj = eval("("+data+")");

              // 赋值
              $("#order_num").val(data_obj.order_num);
              $("#active_id").val(data_obj.active_id);
              $("#img_url1").val(data_obj.cover_img_url);
              $("#title").val(data_obj.title);
              var status = data_obj.status;
              if(status == 1)
              {
                $("#status_on").attr("checked",'checked');
              }else{
                $("#status_off").attr("checked",'checked');
              }

              $("#tag_name").val(data_obj.tag_name);
              $("#remark").val(data_obj.remark);
              $("#summary").val(data_obj.summary);
              // $("#expire_time").val(data_obj.expire_time);
              $("#act").val("edit");
              if(data_obj.expire_time == 0)
              {
                // 隐藏时间框
                $("#expire_time").hide();
                $("#is_forever").attr("checked","checked");
              }
              else
              {
                $("#expire_time").val(data_obj.expire_time);
              }

            }
            else
            {
              $("#tip").html("失败,请重试");
             // alert('操作失败');
            }
          },
          error:function()
          {
            alert('请求出错');
          },
          complete:function()
          {
            // $('#tips').hide();
          }
        });

    return false;
  }

  //点击 活动是否限时事件
  function click_forever()
  {
    // 不能用attr('checked')获取是否选中,因为返回‘undedied'
    // var is_check = $('#is_forever').attr('checked');

    // 可以用prop("checked")或is(':checked')来获取是否选中
    var is_check = $('#is_forever').prop("checked");
    // alert(is_check);
    if(is_check)
    {
      $("#expire_time").hide();
      $("#expire_time").val(0);
    }
    else
    {
      $("#expire_time").show();
    }

  }

  // 提交表单
  function check_form()
  {
    var title = $.trim($('#title').val());
    var tag_name = $.trim($('#tag_name').val());
    var act   = $.trim($('#act').val());

    if(!title)
    {
      alert('标题不能为空!');
      return false;
    }
    if(!tag_name)
    {
      alert('标签不能为空!');
      return false;
    }
    var form_data = $('#form_data').serialize();

    // 异步提交数据到action/add_action.php页面
    $.ajax(
        {
          url: "action/active_action.php",
          data:{"form_data":form_data,"act":act},
          type: "post",
          beforeSend:function()
          {
            $("#tip").html("正在处理...");
            return true;
          },
          success:function(data)
          {
            if(data > 0)
            {

              var msg = "添加";
              if(act == "edit") msg = "编辑";
              $("#tip").html("恭喜," +msg+ "成功!");
              // document.location.href='system_notice.php'
              alert(msg + "OK!");
              location.reload();
            }
            else
            {
              if(data == -2) alert("标签名不能重复!");
              $("#tip").html("失败,请重试");
              alert('操作失败');
            }
          },
          error:function()
          {
            alert('请求出错');
          },
          complete:function()
          {
            $('#acting_tips').hide();
          }
        });

    return false;
  }

  $(function () { $('#addUserModal').on('hide.bs.modal', function () {
    // 关闭时清空edit状态为add
    $("#act").val("add");
    location.reload();
  })
  });
</script>
<body>
<div class="container" style="min-width: 1200px;">

<h1>
  活动列表
</h1>
  <form action="active_info_list.php" method="post" class="form">
  <table class="table table-bordered">
    <tbody>
    <tr>
      <td>标题:<input type="text" name="search_title" value="{search_title}"></td>
      <td>  <!-- 按钮触发模态框 -->
        <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#addUserModal">
          添加活动
        </button>
      </td>
    </tr>
    <tr>
      <td colspan="10" style=" text-align: center; padding: 10px; border: none">
        <input type="submit" class="btn btn-default" value="搜索" />  <a href="active_info_list.php">默认</a>
      </td>
    </tr>
    </tbody>
  </table>
  </form>

  总数(<b>{total_count}</b>)
<table class="table table-hover table-bordered" >
  <thead>
  <tr>
    <th>排序</th>
    <th>显示标题</th>
    <th>图片链接</th>
    <th>标签</th>
    <th>截止时间</th>
    <th>状态</th>
    <th>活动详情</th>
    <th>奖项设置</th>
    <th>简介</th>
    <th>备注</th>
    <th>操作</th>
  </tr>
  </thead>
  <tbody>
  <!-- BEGIN list -->
  <tr>
    <td>{order_num}</td>
    <td>{title}[{active_id}]</td>
    <td><input readonly="true" value="{cover_img_url}" style="width:150px;"/></td>
    <td>{tag_name}</td>
    <td>{expire_time}</td>
    <td><!-- IF status=="1" --> 上架 <!-- ELSE --><font color="gray">下架</font><!-- ENDIF --></td>
    <td><a href="active_content_edit.php?active_id={active_id}" target="_blank">内容编辑</a></td>
    <td> <a href="active_prize.php?active_id={active_id}" target="_blank">设置奖项</a></td>
    <td><textarea readonly="true"style="width:100px;height:30px;"/>{summary}</textarea></td>
    <td>{remark}</td>
    <td>
      <button type="button" class="btn btn-info" data-toggle="modal" onclick="return get_edit_info({active_id})" data-target="#addUserModal">编辑</button>
        
    <button type="button" class="btn btn-danger" onclick="return delete_info({active_id})">删除</button>
    </td>

  </tr>

  <!-- END list -->


  </tbody>
</table>
  {page_str}       

  <!-- 模态框(Modal) -->

  <div class="modal fade" id="addUserModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
            ×
          </button>
          <h4 class="modal-title" id="myModalLabel">
            活动详情
          </h4>
        </div>
        <div class="modal-body">
          <div class="form-group">
            <label for="lastname" class="col-sm-3 control-label">上传封面图片</label>
            <div class="col-sm-9">
              <!--注意这里的iframe标签-->
              <iframe src="upload_img.php" frameborder="0" scrolling="no" width="380px" height="35"></iframe>
            </div>
          </div>
          <form method="post" action="" class="form-horizontal" role="form" id="form_data" onsubmit="return check_form()" style="margin: 20px;">
            <div class="form-group">
              <label for="lastname" class="col-sm-3 control-label">排名</label>
              <div class="col-sm-9">
                <input type="text" class="form-control" id="order_num" name="order_num" value="{order_num}"
                    placeholder="排名">
              </div>
            </div>
            <div class="form-group">
              <label for="lastname" class="col-sm-3 control-label">标题</label>
              <div class="col-sm-9">
                <input type="text" class="form-control" name="title" value="{title}" id="title"
                    placeholder="">
              </div>
            </div>
            <div class="form-group">
              <label for="lastname" class="col-sm-3 control-label">标签</label>
              <div class="col-sm-9">
                <input type="text" class="form-control" name="tag_name" value="{tag_name}" id="tag_name"
                    placeholder="">
              </div>
            </div>
            <div class="form-group">
              <label for="lastname" class="col-sm-3 control-label">封面图链接</label>
              <div class="col-sm-9">
                <input type="text" class="form-control" name="cover_img_url" value="{cover_img_url}" id="img_url1"
                    placeholder="图片链接"> <img onload="act_resize_img(this,60,60,true);" id="img_view1" src="" style="margin:3px;" />
                <input type="hidden" id="act" value="add" name="act"/>
                <input type="hidden" id="active_id" value="{active_id}" name="active_id"/>
              </div>
            </div>

            <div class="form-group">
              <label for="lastname" class="col-sm-3 control-label">截止时间</label>
              <div class="col-sm-9">
                <!-- 块元素变为内联元素 用display:inline属性即可成一行,块元素用block -->
                <input type="text" style="width: 300px;display:inline" class="form-control" name="expire_time" value="{expire_time}" class="Wdate" readonly="readonly" id="expire_time"
                    >
                <label class="checkbox-inline">
                <input type="checkbox" name="is_forever" id="is_forever" value="1" onclick="return click_forever()">不限时
                  </label>

              </div>
            </div>

            <div class="form-group">
              <label for="lastname" class="col-sm-3 control-label">状态</label>
              <div class="col-sm-9">

                <label class="checkbox-inline">
                  <input type="radio" name="status" id="status_on" value="1" >上架
                </label>
                <label class="checkbox-inline">
                  <input type="radio" name="status" id="status_off" checked="checked" value="0" >下架
                </label>
              </div>
            </div>

            <div class="form-group">
              <label for="remark" class="col-sm-3 control-label">简介</label>
              <div class="col-sm-9">
                <textarea class="form-control" name="summary" value="{summary}" id="summary"
                    placeholder="活动简介">

                </textarea>
              </div>
            </div>
            <div class="form-group">
              <label for="remark" class="col-sm-3 control-label">备注</label>
              <div class="col-sm-9">
                <textarea class="form-control" name="remark" value="{remark}" id="remark"
                      placeholder="备注">

                </textarea>
              </div>
            </div>
          </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">关闭
          </button>
          <button type="submit" class="btn btn-primary">
            提交
          </button> 
        </div>
        </form>
      </div><!-- /.modal-content -->
    </div><!-- /.modal -->
  </div>
</div>
</body>
</html>

(1)knockout.bootstraptable.js

永利集团304手机版 12

2、cshtml页面代码