layui【實例】彈窗選擇聯繫人添加到父頁面

效果預覽:

實現功能:
父頁面中點擊輸入框彈出聯繫人選擇窗口
聯繫人選擇窗口可搜索聯繫人,勾選聯繫人後點擊添加按鈕將聯繫人回傳至父頁面輸入窗口。
實現代碼:
父頁面HTML

<div class="layui-inline">		
				<label class="layui-form-label">聯繫人</label>
				<div class="layui-input-inline">
					<input type="text" name="linkman" id="addlink" class="layui-input newsAuthor" lay-verify="required" placeholder="聯繫人或申請人" autocomplete="off">
				</div>
			</div>

父頁面JS:

layui.use(['layer', 'form','laydate'], function(){
  var layer = layui.layer,
  laydate = layui.laydate,
  form = layui.form;
  $ = layui.jquery;
//選擇聯繫人
 $("#addlink").click(function(){
		layer.open({
		  type: 2,
		  title:"添加聯繫人",
		  id:"link",
		  area: ['75%', '80%'],
		  fixed: false, //不固定
		  maxmin: true,
		  content: '../link/addlink.php'
		});	
	});	

});

聯繫人選擇界面(addlink.php):

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>添加聯繫人</title>
  <link rel="stylesheet" href="../../layui/css/layui.css" media="all">
  <style>
  body{padding:10px; font-size:14px; background:#fff; width:95%; margin:0 auto; font-size:14px; line-height:20px; overflow:auto;}
    p{margin-bottom:10px;}
    input{border:1px solid #999; padding:5px 10px; margin:0 10px 10px 0;}

  .layui-form-item {
    margin-top: 15px;
  }
  .layui-input-block{
    float: left;
    margin-left: 0;
    margin-right: 2%;
  }
  td.on{
    border-bottom: 1px solid #D60711;
    color: #D60711;
  }
  td.active{
    background: #D60711;
    color: #fff;
  }
  .search_div{
    width: 95%;
    position: fixed;
    z-index: 2;
    background-color: #fff;
    border: 1px solid #e6e6e6;
  }
  .layui-table {
    width: 100%;
    background-color: #fff;
    color: #666;
}
  </style>
</head>
<body class="layui-form">
<div class="search_div">

    <div class="layui-form-item">
      <label class="layui-form-label">輸入關鍵字</label>
      <div class="layui-input-block">
        <input type="text" name="title" required  lay-verify="required" placeholder="請輸入姓名" autocomplete="off" class="layui-input" id="searchInput" >
      </div>
      <div class="layui-input-block">
        <button class="layui-btn" id="form" lay-submit lay-filter="formDemo">搜索</button>
      </div>
      <div class="layui-input-block">  
        <button class="layui-btn layui-btn-normal" id="add"><i class="layui-icon"></i>添加到聯繫人</button>
      </div>
      <div class="layui-inline">
      <div class="layui-form-mid layui-word-aux">如果實在不知道聯繫人選擇“不詳”</div>
    </div>
    </div>

</div>
<p style="height: 70px;"></p>
  <table class="layui-table" id="all_list">
    <colgroup>
      <col width="8%">
      <col >
      <col>
      <col>
    </colgroup>
    <thead>
      <tr>
        <th>選擇</th>
        <th>姓名</th>
        <th>公司名稱</th>
        <th>聯繫電話</th>
      </tr>
    </thead>
    <tbody>
     <?php
      for($i=0;$i<count($list);$i++){ 
        echo "<tr>";
        echo '<td><input type="checkbox" name="name" lay-skin="primary" data-id="'.$list[$i]["name"].'" > </td>';
        echo '<td class="list_one">'.$list[$i]["name"].'</td>';
        echo '<td class="list_one">'.$list[$i]["com"].'</td>';
        echo '<td class="list_one">'.$list[$i]["phone"].'</td>';
      }
     ?> 
    </tbody>
  </table>
<script src="../../layui/layui.js"></script>
<script type="text/javascript">//注意:parent 是 JS 自帶的全局對象,可用於操作父頁面
layui.use(['layer', 'form'], function(){
  var layer = layui.layer
  ,form = layui.form;
  $ = layui.jquery; 
  var link = parent.layer.getFrameIndex(window.name); //獲取窗口索引
//回車鍵查詢
  $(".layui-input").bind("keydown",function(e){
    // 兼容FF和IE和Opera
    var theEvent = e || window.event;
    var code = theEvent.keyCode || theEvent.which || theEvent.charCode;
     if (code == 13) {
    //回車執行查詢
    $("#form").click();
    }
  });
  var active = 0;
  form.on("submit(formDemo)",function(data){
    // 獲取搜索框的值
    var kwds = $("#searchInput").val();
    // 獲取第一個列表內容
    var this_one = {};
    var real_name = '';
    // 定義數據列表
    var list = $("#all_list .list_one");
    // 定義查找的起始值
    var true_one = 0;
    for (var i = 0; i < list.length; i++) {
      this_one = $(list[i]);
      real_name = this_one.text().toString();
      // 執行like匹配
      if(real_name.match(kwds)){
        // 處理第當前的結果
        if(true_one == active){
          // 獲取窗口的寬和高
          var windows_wdh = $(window).width();
          var windows_hgt = $(window).height();
          // 獲取第一個座標
          var x_len = this_one.offset().left;
          var y_len = this_one.offset().top;
          // 驅動滾動條滾動到指定的位置
          $("html,body").animate({scrollTop:(y_len-windows_hgt/2), scrollLeft:(x_len-windows_wdh/2)},500);
          // 標記當前選中的結果
          this_one.addClass('active');
          this_one.removeClass('on');
        }else{
          // 標記符合的結果
          this_one.addClass('on');
          this_one.removeClass('active');
        }
        // 累加真實的選擇
        true_one++;
      }else{
        this_one.removeClass('on');
        this_one.removeClass('active');
      }
    }
    // 判斷是否搜索完畢 如果搜索完畢 則從第一個開始 否則繼續搜索下一個
    active = active >= true_one-1 ? 0 : active+1;
    if(true_one == 0){
      layer.msg('未匹配到聯繫人', function(){});
    }
    return false;
  })
  $('#add').on('click', function(){
        var id_array=new Array();  
        $('input[name="name"]:checked').each(function(){  
            id_array.push($(this).attr("data-id"));//向數組中添加元素  
        });  
        var idstr=id_array.join(',');//將數組元素連接起來以構建一個字符串  
        //alert(idstr);  
        //alert(id_array.length);
        if(id_array.length>3){
          layer.msg('你④不④傻,選這麼多聯繫人?', function(){});
        }else{
         parent.$('#addlink').val(idstr);
        parent.layer.close(link); 
       }
  });

});
</script>
</body>
</html>

聯繫人爲PHP數組循環遍歷,請手動更改查看效果。

希望能幫助到有需要的朋友,歡迎指正!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章