纯js仿淘宝多图片封面图插件模板/带视频,带放大镜,带前后端完整代码PHP

news2024/11/17 12:32:16

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

功能预览,他依赖jq插件,请自已引入
类似这样

<script type="text/javascript" src="/Application/Admin/Static/js/jquery-2.0.3.min.js"></script>

一,前端模板代码

	<!--多图功能-->
			<style>
@charset "utf-8";
.wrap_imgs img {
	vertical-align: middle;
	width: 100%;
	height: 100%;
}
.wrap_imgs {
	position: relative;
	top: 0px;
	left: 0px;
	width: 100%;height:auto;
	min-height: 410px;
}
.imgss {
	position: absolute;
	left: 0;
	top: 0;
	width: 100%;
	height: 100%;
}
.wrap_mains {
	position: relative;
	overflow: hidden;
	width: 100%;
	height: 330px;
}
.smallers {
	position: relative;
	overflow: hidden;
	width: 100%;
	height: 82px;
	margin-top: 10px;
}
.smallers li ,.smallers span {
	position: relative;
	float: left;
	padding: 2px;
	width: 86px;
	height: 64px;
	border: 1px solid #ccc;
	margin: 0 5px;
	cursor: pointer;
	display:block;

}
.smallers li:first-child {
	margin-left: 0;
}
.smallers .current {
	border: 1px dashed #ec6941;
}
.bigers {
	position: absolute;
	overflow: hidden;
	display: none;
	left: 490px;
	width: 470px;
	height: 350px;
}
.masks {
	position: absolute;
	display: none;
	left: 0;
	top: 0;
	width: 100px;
	height: 100px;
	background: url('./Public/home/images/mask-bg.png') repeat;
	cursor: crosshair;
}
.bigers img {
	position: absolute;
	left: 0;
	top: 0;z-index:100;
	width: 200%;
	height: 200%;
}

@media (max-width: 1439px) {
.smallers li ,.smallers span {
	width: 53px;
	height: 50px;
margin: 0 3px;
padding: 1px;
}
.wrap_mains {
	position: relative;
	overflow: hidden;
	width: 100%;
	height: 286px;
}
.bigers {
left: 450px;
	width: 470px;
	height: 300px;
}
.wrap_imgs {

	width: 100%;height:auto;
	min-height: 350px;
}
}

@media (max-width: 768px) {
.smallers li ,.smallers span {
	width: 56px;
	height: 50px;
margin: 0 3px;
padding: 1px;
}

}
</style>
<div class="wrap_imgs">
	<div class="bigers" id="bigers"></div>
	<div class="imgss">
		<div class="wrap_mains" id="wrap_mains">
		<notempty name="videob" >{$videob}</notempty>
			<div class="masks" id="masks"></div>
		</div>
		<ul class="smallers" id="smallers">
		<notempty name="videos" ><span id="smallvideo">{$videos}</span></notempty>
		</ul>
	</div>
</div>


<script>

function morepics(){
var bigvideo=document.getElementById('bigvideo');
var smallvideo=document.getElementById('smallvideo');
    var bigers=document.getElementById('bigers');//最终2倍放大的图
    var wrap_mains=document.getElementById('wrap_mains');
	var wrap_mains_Child=wrap_mains.getElementsByTagName('img');
    var smallers=document.getElementById('smallers');
    var masks=document.getElementById('masks');
    var wrap_imgs=bigers.parentNode;
    var imgArr=[
        {$tuku}
    ];
    var imgSum=imgArr.length;
    if(imgSum>4){
        imgSum=4;
    }
	
	//追加小图片列表
    for (var i=0;i<imgSum;i++) {
        var lis=document.createElement('li');
        var imgs=document.createElement('img');
        imgs.src=imgArr[i].path;
        lis.appendChild(imgs);
        smallers.appendChild(lis);
    }
	
    var wrap_mainsImg=document.createElement('img');//准备被放大的大图
    var bigImg=document.createElement('img');
    
	
	//如果视频存在
	if(bigvideo){
	 bigers.appendChild(bigImg);//先加载一个放大的2倍图
	 var bigPic=bigers.children[0];
	 var liArr=smallers.getElementsByTagName('li');
	  bigImg.src=liArr[0].children[0].src;
	  wrap_mainsImg.src=liArr[0].children[0].src;//初始化时
	  wrap_mainsImg.style.display='none';
    wrap_mains.insertBefore(wrap_mainsImg,masks);
	 //alert(liArr.length);
	 smallvideo.className='current';
	 smallvideo.onmouseover=function(){
            this.className='current';
			bigvideo.style.display='block';//视频显示.
			 wrap_mainsImg.style.display='none';//大图片隐藏
			   for (var j = 0; j < liArr.length; j++) {
                
                    liArr[j].removeAttribute('class');
                    liArr[j].removeAttribute('className');
      
            }
			}
	   for (var i=0;i<liArr.length;i++) {
        liArr[i].index=i;
        liArr[i].onmouseover=function(){
            this.className='current';
			smallvideo.removeAttribute('class');
					smallvideo.removeAttribute('className');
            bigPic.src=this.children[0].src;
			wrap_mains.children[1].src=this.children[0].src;
			bigvideo.style.display='none';//视频隐藏
			wrap_mainsImg.style.display='block';
            for (var j = 0; j < liArr.length; j++) {
                if(this!=liArr[j]){
                    liArr[j].removeAttribute('class');
                    liArr[j].removeAttribute('className');
                }
            }
        }
    }
	
	  wrap_mains.onmouseenter=function(){
	  if( smallvideo.className!='current'){
        masks.style.display='block';
        bigers.style.display='block';
		//alert(smallvideo.className);
    }
	}
	 
     wrap_mains.onmouseleave=function(){
        masks.style.display='none';
        bigers.style.display='none';
    }
    wrap_mains.onmousemove=function(e){
	if( smallvideo.className!='current'){
        var e = e || window.event;
        var pagex=e.pageX || scrolls().left+e.clientX;
        var pagey=e.pageY || scrolls().top+e.clientY;
        pagex=pagex-wrap_imgs.offsetLeft-masks.offsetWidth/2;;
        pagey=pagey-wrap_imgs.offsetTop-masks.offsetHeight/2;
        if(pagex<0){
            pagex=0;
        }
        if(pagey<0){
            pagey=0;
        }
        if(pagex>wrap_mains.offsetWidth-masks.offsetWidth){
            pagex=wrap_mains.offsetWidth-masks.offsetWidth;
        }
         if(pagey>wrap_mains.offsetHeight-masks.offsetHeight){
            pagey=wrap_mains.offsetHeight-masks.offsetHeight;
        }
        masks.style.left=pagex+'px';
        masks.style.top=pagey+'px';
        var scale=(bigPic.offsetWidth-bigers.offsetWidth)/(wrap_mains.offsetWidth-masks.offsetWidth);
        var xx=pagex*scale;
        var yy=pagey*scale;
        bigPic.style.left=-xx+'px';
        bigPic.style.top=-yy+'px';
    }
	}
	}else{
	
	var liArr=smallers.children;
	 bigImg.src=wrap_mainsImg.src=liArr[0].children[0].src;
    wrap_mains.insertBefore(wrap_mainsImg,masks);
    bigers.appendChild(bigImg);
	
	    var bigPic=bigers.children[0];
    liArr[0].className='current';
    for (var i=0;i<liArr.length;i++) {
        liArr[i].index=i;
        liArr[i].onmouseover=function(){
            this.className='current';
            bigPic.src=wrap_mains.children[0].src=this.children[0].src;
            for (var j = 0; j < liArr.length; j++) {
                if(this!=liArr[j]){
                    liArr[j].removeAttribute('class');
                    liArr[j].removeAttribute('className');
                }
            }
        }
    }
    wrap_mains.onmouseenter=function(){
        masks.style.display='block';
        bigers.style.display='block';
    }
     wrap_mains.onmouseleave=function(){
        masks.style.display='none';
        bigers.style.display='none';
    }
    wrap_mains.onmousemove=function(e){
        var e = e || window.event;
        var pagex=e.pageX || scrolls().left+e.clientX;
        var pagey=e.pageY || scrolls().top+e.clientY;
        pagex=pagex-wrap_imgs.offsetLeft-masks.offsetWidth/2;;
        pagey=pagey-wrap_imgs.offsetTop-masks.offsetHeight/2;
        if(pagex<0){
            pagex=0;
        }
        if(pagey<0){
            pagey=0;
        }
        if(pagex>wrap_mains.offsetWidth-masks.offsetWidth){
            pagex=wrap_mains.offsetWidth-masks.offsetWidth;
        }
         if(pagey>wrap_mains.offsetHeight-masks.offsetHeight){
            pagey=wrap_mains.offsetHeight-masks.offsetHeight;
        }
        masks.style.left=pagex+'px';
        masks.style.top=pagey+'px';
        var scale=(bigPic.offsetWidth-bigers.offsetWidth)/(wrap_mains.offsetWidth-masks.offsetWidth);
        var xx=pagex*scale;
        var yy=pagey*scale;
        bigPic.style.left=-xx+'px';
        bigPic.style.top=-yy+'px';
    }
	}
   

}
</script>

二,前端控制器代码


 $video=M('video')->where('cpinfo_id=1 and catid='.$id)->order('ctime desc')->find();	
		 if($video){
		$vvb='<video id="bigvideo" class="edui-upload-video  vjs-default-skin video-js" controls="" preload="none" width="100%" height="auto" style="min-height:350px" poster="" src="'.$video['url'].'" data-setup="{}"><source src="'.$video['url'].'" type="video/wav"></video>'; 
			  $vvs='<img  src="./Uploads/shipin_fengmian.jpg"/>'; 
		 }
		 $this->assign('videob',$vvb); 
		  $this->assign('videos',$vvs); 
		  $tuku=M('tuku')->where('cpinfo_id=0 and catid='.$id)->order('orderby asc')->select();	
		  $tus='';
		foreach($tuku as $v){
			$tus.='{"path":"'.$v['pic'].'"},';
		}
		$tus = substr($tus, 0, -1);
        $this->assign('tuku',$tus); 

三.数据库sql

CREATE TABLE `tg_video` (
  `id` int(11) NOT NULL,
  `cpinfo_id` int(11) DEFAULT '0',
  `title` varchar(100) DEFAULT NULL,
  `ctime` int(11) DEFAULT '0',
  `pic` varchar(300) DEFAULT NULL,
  `catid` int(11) NOT NULL DEFAULT '0' COMMENT '附件所属产品的分类',
  `url` varchar(300) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

ALTER TABLE `tg_video`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `tg_video`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
CREATE TABLE `tg_tuku` (
  `id` int(11) NOT NULL,
  `cpinfo_id` int(11) DEFAULT '0' COMMENT '0表示型号id未定,当catid大于0,cpinfo_id=0表示是分类专用图片.1表示添加分类时(catid=0),2表示添加产品时上传',
  `title` varchar(100) DEFAULT NULL,
  `ctime` int(11) DEFAULT '0',
  `pic` varchar(300) DEFAULT NULL,
  `catid` int(11) NOT NULL DEFAULT '0' COMMENT '附件所属产品的分类',
  `orderby` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
  `retype` int(11) NOT NULL DEFAULT '0' COMMENT '图片所属分类的上级分类'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ALTER TABLE `tg_tuku`
  ADD PRIMARY KEY (`id`);
ALTER TABLE `tg_tuku`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;

四,后台控制器


    //单列内容列表
 function insert_alltuku(){
			   $catid=(int)I('catid');
			   
			
	
			   $pic=I('pic');
			   //$pic='./Uploads/tuku/2023-11-07_10-53-01_929.jpg';
			   $o=M('tuku')->where("pic='".$pic."'")->find();
			 //  print_r($o);exit;
			   $arrr=array();
if	($o){
	
	   if($catid){
		$o2=M('conttype')->where('id='.$catid)->find();
		$arrr['retype']=$o2['retype'];
	}
	
	
	
	$arrr['pic']=$pic;
	$arrr['catid']=$catid;
	$arrr['title']=$o['title'];
	$arrr['ctime']=time();
	$arrr['cpinfo_id']=($catid==0)?1:0;
}			
		 $id=M('tuku')->add($arrr);		
				
if($id){
	M('tuku')->where('id='.$id)->setField('orderby',$id);
	echo json_encode(array('pic'=>$_POST['pic'],'id'=>$id));
}else{
        echo 0;
}
	}
function insert_alltuku_clist(){
			   $cpinfo_id=(int)I('cpinfo_id');
			   $catid=(int)I('catid');
			   $pic=I('pic');
			   //$pic='./Uploads/tuku/2023-11-07_10-53-01_929.jpg';
			   $o=M('tuku')->where("pic='".$pic."'")->find();
			 //  print_r($o);exit;
			   $arrr=array();
if	($o){
	
	   if($catid){
		$o2=M('conttype')->where('id='.$catid)->find();
		$arrr['retype']=$o2['retype'];
	}
	
	
	
	$arrr['pic']=$pic;
	$arrr['catid']=$catid;
	$arrr['title']=$o['title'];
	$arrr['ctime']=time();
	$arrr['cpinfo_id']=($cpinfo_id==0)?2:$cpinfo_id;
}			
		 $id=M('tuku')->add($arrr);		
				
if($id){
	M('tuku')->where('id='.$id)->setField('orderby',$id);
	echo json_encode(array('pic'=>$_POST['pic'],'id'=>$id));
}else{
        echo 0;
}
	}
function uploadifive(){
$catid=I('catid');
if($catid>0){//分类编辑
	  $count=M('tuku')->where('(cpinfo_id=0) and catid='.$catid)->count();
}else{ //分类添加
	$_POST['cpinfo_id']=1;
	$count=M('tuku')->where('cpinfo_id=1 and catid=0')->count();
		//  print_r($count);exit;
}
	 if($count>3) {echo 0;exit;}
		//  echo '<script>alert('.$count.');</script>';
		$uploadDir = '/Uploads/tuku/';
// Set the allowed file extensions
$fileTypes = array( 'png','jpg','jpeg','png','gif','webp'); // Allowed file extensions

if (!empty($_FILES) ) {
	$tempFile   = $_FILES['Filedata']['tmp_name'];
	$uploadDir  = $_SERVER['DOCUMENT_ROOT'] . $uploadDir;
	//$targetFile = $uploadDir . $_FILES['Filedata']['name'];
//后缀
 $lx=strrchr($_FILES['Filedata']['name'],".");
	// Validate the filetype
	$fileParts = pathinfo($_FILES['Filedata']['name']);
	if (in_array(strtolower($fileParts['extension']), $fileTypes)) {
		// Save the file
			//  $lx=strrchr($tempFile,".");
            $newtime=date('Y-m-d_H-i-s').'_';
            $rund= rand(0,999);
           $_POST['pic']='./Uploads/tuku/'.$newtime.$rund.$lx; 
				
		$copy=move_uploaded_file($tempFile, $_POST['pic']);
		if($copy){
			//版本号
			//$bbh=basename($_FILES['Filedata']['name'],$lx);
		//	;
			//	M('user_exe')->where('id='.I('id'))->setField('new_v',$bbh);;
				$_POST['ctime']=time();
			//$_POST['orderby']=time();//$_POST['cpinfo_id']=0;//0表示产品型号id未定,产品保存后,修改成实际的,分类编辑后,重新设置为1.表示图片是分类专用的图片
			$id2=M('tuku')->add($_POST);
				
if($id2){
	M('tuku')->where('id='.$id2)->setField('orderby',$id2);
	if($catid){
		$o=M('conttype')->where('id='.$catid)->find();
		M('tuku')->where('id='.$id2)->setField('retype',$o['retype']);
	}
}
			//	header("Location: ?a=user_exe");
			//header("Location: ?a=user_exe");
		echo json_encode(array('pic'=>$_POST['pic'],'id'=>$id2));
}
	} else {

		// The file type wasn't allowed
		echo '文件类型禁止上传.';

	}
}	
			
		}
		


//视频上传
function uploadifive_v(){
$catid=I('catid');
$cpinfo_id=I('cpinfo_id');
	$is_catid=I('is_catid');
	if($is_catid){//如果是分类页
		$_POST['cpinfo_id']=1;
	}else{
		//产品页上传视频时
		$_POST['cpinfo_id']=$cpinfo_id==0?2:$cpinfo_id;//产品号为0时,表示在添加产品,
	}
		//  echo '<script>alert('.$count.');</script>';
		$uploadDir = '/Uploads/video/';
// Set the allowed file extensions
$fileTypes = array( 'mp4','3gp','avi','rm','wav','acc'); // Allowed file extensions

if (!empty($_FILES) ) {
	$tempFile   = $_FILES['Filedata']['tmp_name'];
	$uploadDir  = $_SERVER['DOCUMENT_ROOT'] . $uploadDir;
	//$targetFile = $uploadDir . $_FILES['Filedata']['name'];
//后缀
 $lx=strrchr($_FILES['Filedata']['name'],".");
	// Validate the filetype
	$fileParts = pathinfo($_FILES['Filedata']['name']);
	if (in_array(strtolower($fileParts['extension']), $fileTypes)) {
		// Save the file
            $newtime=date('Y-m-d-His').'_';
            $rund= rand(0,9999);
           $_POST['url']='./Uploads/video/'.$newtime.$rund.$lx; 
				
		$copy=move_uploaded_file($tempFile, $_POST['url']);
		if($copy){
				$_POST['ctime']=time();
			$id2=M('video')->add($_POST);
				

if($id2){
	//M('video')->where('id='.$id2)->setField('orderby',$id2);
	//查询有重复视频,则删除
//echo ($catid);exit;
			//如果本分类存在其它视频.则判断是否是共用的
	if($is_catid){
		$cont=M('video')->where("id != $id2 and cpinfo_id=1 and catid =".$catid)->select();//cpinfo_id=0表示是分类专属图片.
	//echo json_encode($cont);exit;
	if($cont){
		
		
			foreach($cont as $v){
				$id3=$v['id'];
	$del=M('video')->where(" id=$id3 ")->delete();
	}
	}
	}else{
		$cont=M('video')->where("id != ".$id2 . " and ( cpinfo_id= 2 or cpinfo_id=".$cpinfo_id." ) " )->select();
		if($cont){
			foreach($cont as $v){
	$id3=$v['id'];
	$del=M('video')->where(" id=$id3 ")->delete();
		}
	}
		
		
	}
	
		
	
echo  $_POST['url'];
}
			//	header("Location: ?a=user_exe");
			//header("Location: ?a=user_exe");
		
}
	} else {

		// The file type wasn't allowed
		echo '文件类型禁止上传.';

	}
}	
			
		}
 	  //取消选择已存在的图
 	function del_tuku(){
		$id = $_POST['id'];
		$url = $_POST['url'];
		//$v['ctime']+259200)<time()
		$del=M('tuku')->where("id=".$id)->delete();
		$o3=M('tuku')->where("pic='".$url."'")->count();
			if($o3==0){
				$del=M('tuku')->where("id=".$id)->delete();		
				unlink($_SERVER['DOCUMENT_ROOT'].$url); 
			}
		if($del){
			echo 1;
		}else{
			echo 0;
		}
	}

 	   function get_tuku_clist(){
			   $id=(int)I('id')>2?(int)I('id'):2;
		$cont=M('tuku')->where("cpinfo_id=$id ")->order('ctime desc')->select();
if($cont){
	echo  json_encode($cont);;
}else{
        echo 0;
}
	}
	   function get_tuku(){
			   $catid=(int)I('typeid');
			   //$catid=579;
		$cont=M('tuku')->where("cpinfo_id=0 and catid =".$catid)->order('ctime desc')->select();
if($cont){
	echo  json_encode($cont);;
}else{
        echo 0;
}
	}

	   function change_order_tuku(){
			   $id=I('ids');
			   $order=I('order');
				$cont=M('tuku')->where("id =".$id)->setField('orderby',$order);
if($cont){
	echo 1;
}else{
        echo 0;
}
	}
	
		   function change_title_tuku(){
			   $id=I('ids');
			   $title=I('title');
				$cont=M('tuku')->where("id =".$id)->setField('title',$title);
if($cont){
	echo 1;
}else{
    echo 0;
}
	}

五,后台模板


<style>
/*
UploadiFive
Copyright (c) 2012 Reactive Apps, Ronnie Garcia
*/

.uploadifive-button {
	background-color: #505050;
	background-image: linear-gradient(bottom, #505050 0%, #707070 100%);
	background-image: -o-linear-gradient(bottom, #505050 0%, #707070 100%);
	background-image: -moz-linear-gradient(bottom, #505050 0%, #707070 100%);
	background-image: -webkit-linear-gradient(bottom, #505050 0%, #707070 100%);
	background-image: -ms-linear-gradient(bottom, #505050 0%, #707070 100%);
	background-image: -webkit-gradient(
		linear,
		left bottom,
		left top,
		color-stop(0, #505050),
		color-stop(1, #707070)
	);
	background-position: center top;
	background-repeat: no-repeat;
	-webkit-border-radius: 30px;
	-moz-border-radius: 30px;
	border-radius: 30px;
	border: 2px solid #808080;
	color: #FFF;
	font: bold 12px Arial, Helvetica, sans-serif;
	text-align: center;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	text-transform: uppercase;
	width: 100%;
}
.uploadifive-button:hover {
	background-color: #606060;
	background-image: linear-gradient(top, #606060 0%, #808080 100%);
	background-image: -o-linear-gradient(top, #606060 0%, #808080 100%);
	background-image: -moz-linear-gradient(top, #606060 0%, #808080 100%);
	background-image: -webkit-linear-gradient(top, #606060 0%, #808080 100%);
	background-image: -ms-linear-gradient(top, #606060 0%, #808080 100%);
	background-image: -webkit-gradient(
		linear,
		left bottom,
		left top,
		color-stop(0, #606060),
		color-stop(1, #808080)
	);
	background-position: center bottom;
}
.uploadifive-queue-item {
	background-color: #F5F5F5;
	border-bottom: 1px dotted #D5D5D5;
	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	border-radius: 5px;
	font: 12px Arial, Helvetica, Sans-serif;
	margin-top: 3px;
	padding: 5px;
}
.uploadifive-queue-item .close {
	background: url('uploadifive-cancel.png') 0 0 no-repeat;
	display: block;
	float: right;
	height: 16px;
	text-indent: -9999px;
	width: 16px;
}
.uploadifive-queue-item .progress {
	border: 1px solid #D0D0D0;
	height: 3px;
	margin-top: 5px;
	width: 100%;
}
.uploadifive-queue-item .progress-bar {
	background-color: #0072BC;
	height: 3px;
	width: 0;
}
</style>


            <div class="form-item cf  col-sm-6">
<div id="fileQueue_v"></div>
			<input  id="file_upload_v" name="file_upload_v" type="file" multiple="true"/>
			
			可直接填写以前上传过的视频,地址格式需要以 ./Uploads/video/开头
			
			<div class="clearfix"></div><br/>
		<input  id="video" name="video" value="{$video.url}"placeholder="视频地址"class="text input-large form-control form-input-width" type="text" style="width:96%"/>
				请预览,以查看视频是否正确 </div>
				 
				  <div class="form-item cf  col-sm-4">

	
	<video id="video_see" class="edui-upload-video  vjs-default-skin video-js" controls="" preload="none" width="100%" height="120" poster="" src="{$video.url}" data-setup="{}">
        <source id="video_source" src="{$video.url}" type="video/mp4"/>
    </video>
				 </div>
            </div>
         


      <div class="form-item cf  col-sm-7">
			   
                <label class="item-label">产品多图,最多4张:排序号最小的默认设置为封面图,如果有多余图片,说明图片不属于任何分类,可直接删除<br/></font></label>
			  <div id="fileQueue"></div>
				
				   <div class="col-sm-2">
                   
				   <div style="padding:5px;text-align:center;">
				   <input id="file_upload"type="file"name="Filedata"/>
				   <div class="clearfix"></div>	<img style="border:1px solid #ccc;margin-top:5px" src="{$cont.pic2}" width="100%" height="auto"/> <div class="clearfix"></div>原封面图
				   
				 <p onclick="alltuku();"style="display:inline-block;border-radius: 16px;height: 32px; line-height: 32px; overflow: hidden; position: relative; text-align: center; font-size:12px;color:#fff;width: 140px;background: #ec6941;
   ">选择上传过的图片</p>  
				   
				   </div>
<input type="hidden" id='hiddenclick' value=''/>

                </div>
				
                <div class="col-sm-2">
                    <input id="inputorder1" type="text" onblur="change_order(1)" style="width:100%;"placeholder="排序编号 小的在前"/><div style="height:4px"> </div>
					
					<p style="position: relative;border:1px solid #ccc;"><img id="tuku1" src="__PUBLIC__/admin/images/nopic.png" width="100%" height="100"/>
					<p id="del_tuku1"style="background:#fff;display:none;color:red;position: absolute;right:10px;top:25px;border:1px solid red;padding:0 5px;"title="删除"onclick="del_tuku(1);">X</p>
					</p>
					
					<input id="inputtuku1" type="hidden" name="tuku1"/>
				   <textarea id="title1"placeholder="标题"onblur="change_title(1)" type="text" name="title1"class="" style="width:100%;"></textarea><br/>
				   
                </div>
				
				  <div class="col-sm-2">
                    <input id="inputorder2" type="text" onblur="change_order(2)" style="width:100%;"placeholder="排序编号 小的在前"/><div style="height:4px"> </div>
					
					<p style="position: relative;border:1px solid #ccc;"><img id="tuku2" src="__PUBLIC__/admin/images/nopic.png" width="100%" height="100"/>
					<p id="del_tuku2"style="background:#fff;display:none;color:red;position: absolute;right:10px;top:25px;border:1px solid red;padding:0 5px;"title="删除"onclick="del_tuku(2);">X</p>
					</p>
					
					<input id="inputtuku2" type="hidden" name="tuku2"/>
				   <textarea id="title2"placeholder="标题"onblur="change_title(2)" type="text" name="title2"class="" style="width:100%;"></textarea><br/>
				   
                </div>
				  <div class="col-sm-2">
                    <input id="inputorder3" type="text" onblur="change_order(3)" style="width:100%;"placeholder="排序编号 小的在前"/><div style="height:4px"> </div>
					
					<p style="position: relative;border:1px solid #ccc;"><img id="tuku3" src="__PUBLIC__/admin/images/nopic.png" width="100%" height="100"/>
					<p id="del_tuku3"style="background:#fff;display:none;color:red;position: absolute;right:10px;top:25px;border:1px solid red;padding:0 5px;"title="删除"onclick="del_tuku(3);">X</p>
					</p>
					
					<input id="inputtuku3" type="hidden" name="tuku3"/>
				   <textarea id="title3"placeholder="标题"onblur="change_title(3)" type="text" name="title3"class="" style="width:100%;"></textarea><br/>
				   
                </div>
				  <div class="col-sm-2">
                    <input id="inputorder4" type="text" onblur="change_order(4)" style="width:100%;"placeholder="排序编号 小的在前"/><div style="height:4px"> </div>
					
					<p style="position: relative;border:1px solid #ccc;"><img id="tuku4" src="__PUBLIC__/admin/images/nopic.png" width="100%" height="100"/>
					
					<p id="del_tuku4"style="background:#fff;display:none;color:red;position: absolute;right:10px;top:25px;border:1px solid red;padding:0 5px;"title="删除"onclick="del_tuku(4);">X</p>
					</p>
					
					<input id="inputtuku4" type="hidden" name="tuku4"/>
				   <textarea id="title4"placeholder="标题"onblur="change_title(4)" type="text" name="title4"class="" style="width:100%;"></textarea><br/>
				   
                </div>
				  
		
			<!--其它相关图片--><div class="clearfix"></div>
			<div id="other_tuku"style=".margin-top:10px;2border:1px solid #ccc;1overflow:hidden;display:none">
			<volist name="alltuku" id="v">
			<div class="col-sm-1">
			<a><img style="border:1px solid #ccc;"id="ins"onclick="insert_alltuku('{$v.pic}');" title="{$v.title}" src="{$v.pic}"/></a>
			</div>
			</volist>
			</div>
			<script type="text/javascript">
			/*
UploadiFive 1.2.3 上传插件
Copyright (c) 2012 Reactive Apps, Ronnie Garcia
Released under the MIT License
*/
;(function($) {

    var methods = {

        init : function(options) {
            
            return this.each(function() {

                // Create a reference to the jQuery DOM object
                var $this = $(this);
                    $this.data('uploadifive', {
                        inputs     : {}, // The object that contains all the file inputs
                        inputCount : 0,  // The total number of file inputs created
                        fileID     : 0,
                        queue      : {
                             count      : 0, // Total number of files in the queue
                             selected   : 0, // Number of files selected in the last select operation
                             replaced   : 0, // Number of files replaced in the last select operation
                             errors     : 0, // Number of files that returned an error in the last select operation
                             queued     : 0, // Number of files added to the queue in the last select operation
                             cancelled  : 0  // Total number of files that have been cancelled or removed from the queue
                                     },
                        uploads    : {
                                         current    : 0, // Number of files currently being uploaded
                                         attempts   : 0, // Number of file uploads attempted in the last upload operation
                                         successful : 0, // Number of files successfully uploaded in the last upload operation
                                         errors     : 0, // Number of files returning errors in the last upload operation
                                         count      : 0  // Total number of files uploaded successfully
                                     }
                    });
                var $data = $this.data('uploadifive');

                // Set the default options
                var settings = $data.settings = $.extend({
                    'auto'            : true,               // Automatically upload a file when it's added to the queue
                    'buttonClass'     : false,              // A class to add to the UploadiFive button
                    'buttonText'      : '批量上传图片',     // The text that appears on the UploadiFive button
                    'checkScript'     : false,              // Path to the script that checks for existing file names 
                    'dnd'             : true,               // Allow drag and drop into the queue
                    'dropTarget'      : false,              // Selector for the drop target
                    'fileObjName'     : 'Filedata',         // The name of the file object to use in your server-side script
                    'fileSizeLimit'   : 0,                  // Maximum allowed size of files to upload
                    'fileType'        : false,              // Extension of files allowed (.zip,.rar,.7z,.pdf,...ETC.), separate with a comma character ,
                    'formData'        : {},                 // Additional data to send to the upload script
                    'height'          : 35,                 // The height of the button
                    'itemTemplate'    : false,              // The HTML markup for the item in the queue
                    'method'          : 'post',             // The method to use when submitting the upload
                    'multi'           : true,               // Set to true to allow multiple file selections
                    'overrideEvents'  : [],                 // An array of events to override
                    'queueID'         : false,              // The ID of the file queue
                    'queueSizeLimit'  : 0,                  // The maximum number of files that can be in the queue
                    'removeCompleted' : true,              // Set to true to remove files that have completed uploading
                    'simUploadLimit'  : 0,                  // The maximum number of files to upload at once
                    'truncateLength'  : 0,                  // The length to truncate the file names to
                    'uploadLimit'     : 0,                  // The maximum number of files you can upload
                    'uploadScript'    : 'uploadifive.php',  // The path to the upload script
                    'width'           : 120                 // The width of the button

                    /*
                    // Events
                    'onAddQueueItem'   : function(file) {},                        // Triggered for each file that is added to the queue
                    'onCancel'         : function(file) {},                        // Triggered when a file is cancelled or removed from the queue
                    'onCheck'          : function(file, exists) {},                // Triggered when the server is checked for an existing file
                    'onClearQueue'     : function(queue) {},                       // Triggered during the clearQueue function
                    'onDestroy'        : function() {}                             // Triggered during the destroy function
                    'onDrop'           : function(files, numberOfFilesDropped) {}, // Triggered when files are dropped into the file queue
                    'onError'          : function(file, fileType, data) {},        // Triggered when an error occurs
                    'onFallback'       : function() {},                            // Triggered if the HTML5 File API is not supported by the browser
                    'onInit'           : function() {},                            // Triggered when UploadiFive if initialized
                    'onQueueComplete'  : function() {},                            // Triggered once when an upload queue is done
                    'onProgress'       : function(file, event) {},                 // Triggered during each progress update of an upload
                    'onSelect'         : function() {},                            // Triggered once when files are selected from a dialog box
                    'onUpload'         : function(file) {},                        // Triggered when an upload queue is started
                    'onUploadComplete' : function(file, data) {},                  // Triggered when a file is successfully uploaded
                    'onUploadFile'     : function(file) {},                        // Triggered for each file being uploaded
                    */
                }, options);

                // Create an array of file types
                var file_types;
                if (settings.fileType) {
                    file_types = settings.fileType.split(',');
                }

                // Calculate the file size limit
                if (isNaN(settings.fileSizeLimit)) {
                    var fileSizeLimitBytes = parseInt(settings.fileSizeLimit) * 1.024;
                    if (settings.fileSizeLimit.indexOf('KB') > -1) {
                        settings.fileSizeLimit = fileSizeLimitBytes * 1000;
                    } else if (settings.fileSizeLimit.indexOf('MB') > -1) {
                        settings.fileSizeLimit = fileSizeLimitBytes * 1000000;
                    } else if (settings.fileSizeLimit.indexOf('GB') > -1) {
                        settings.fileSizeLimit = fileSizeLimitBytes * 1000000000;
                    }
                } else {
                    settings.fileSizeLimit = settings.fileSizeLimit * 1024;
                }

                // Create a template for a file input
                $data.inputTemplate = $('<input type="file">')
                .css({
                    'font-size' : settings.height + 'px',
                    'opacity'   : 0,
                    'position'  : 'absolute',
                    'right'     : '-3px',
                    'top'       : '-3px',
                    'z-index'   : 999 
                });

                // Create a new input
                $data.createInput = function() {

                    // Create a clone of the file input
                    var input     = $data.inputTemplate.clone();
                    // Create a unique name for the input item
                    var inputName = input.name = 'input' + $data.inputCount++;
                    // Set the multiple attribute
                    if (settings.multi) {
                        input.attr('multiple', true);
                    }
                    // Set the accept attribute on the input
                    if (settings.fileType) {
                        input.attr('accept', settings.fileType);
                    }
                    // Set the onchange event for the input
                    input.bind('change', function() {
                        $data.queue.selected = 0;
                        $data.queue.replaced = 0;
                        $data.queue.errors   = 0;
                        $data.queue.queued   = 0;
                        // Add a queue item to the queue for each file
                        var limit = this.files.length;
                        $data.queue.selected = limit;//表示多选文件数
						//alert(limit );
                        if (($data.queue.count + limit) > settings.queueSizeLimit //&& settings.queueSizeLimit !== 0
						) {
                            if ($.inArray('onError', settings.overrideEvents) < 0) {
                                alert('目前的上传数量不得超过 ' + settings.queueSizeLimit + '. ');
                            }
                            // Trigger the error event
                            if (typeof settings.onError === 'function') {
                                settings.onError.call($this, 'QUEUE_LIMIT_EXCEEDED');
                            }
                        } else {
                            for (var n = 0; n < limit; n++) {
                                file = this.files[n];
                                $data.addQueueItem(file);
                            }
                            $data.inputs[inputName] = this;
                            $data.createInput();
                        }
                        // Upload the file if auto-uploads are enabled
                        if (settings.auto) {
                            methods.upload.call($this);
                        }
                        // Trigger the select event
                        if (typeof settings.onSelect === 'function') {
                            settings.onSelect.call($this, $data.queue);
                        }
                    });
                    // Hide the existing current item and add the new one
                    if ($data.currentInput) {
                        $data.currentInput.hide();
                    }
                    $data.button.append(input);
                    $data.currentInput = input;
                };

                // Remove an input
                $data.destroyInput = function(key) {
                    $($data.inputs[key]).remove();
                    delete $data.inputs[key];
                    $data.inputCount--;
                };

                // Drop a file into the queue
                $data.drop = function(e) {
                    // Stop FireFox from opening the dropped file(s)
                    e.preventDefault();
                    e.stopPropagation();

                    $data.queue.selected = 0;
                    $data.queue.replaced = 0;
                    $data.queue.errors   = 0;
                    $data.queue.queued   = 0;

                    var fileData = e.dataTransfer;

                    var inputName = fileData.name = 'input' + $data.inputCount++;
                    // Add a queue item to the queue for each file
                    var limit = fileData.files.length;alert(limit );
                    $data.queue.selected = limit;
                    if (($data.queue.count + limit) > settings.queueSizeLimit
					//Loop through the files&& settings.queueSizeLimit !== 0
					) {
                        // Check if the queueSizeLimit was reached
                        if ($.inArray('onError', settings.overrideEvents) < 0) {
                            alert('The maximum number of queue items has been reached (' + settings.queueSizeLimit + ').  Please select fewer files.');
                        }
                        // Trigger the onError event
                        if (typeof settings.onError === 'function') {
                            settings.onError.call($this, 'QUEUE_LIMIT_EXCEEDED');
                        }
                    } else {
                        // Add a queue item for each file
                        for (var n = 0; n < limit; n++) {
                            file = fileData.files[n];
                            $data.addQueueItem(file);
                            // Check the filetype
							if (file_types) {
								if(file_types.indexOf(file.name.substring(file.name.lastIndexOf('.')))<0)
									$data.error('FORBIDDEN_FILE_TYPE', file);
							}
                        }
                        // Save the data to the inputs object
                        $data.inputs[inputName] = fileData;
                    }

                    // Upload the file if auto-uploads are enabled
                    if (settings.auto) {
                        methods.upload.call($this);
                    }

                    // Trigger the onDrop event
                    if (typeof settings.onDrop === 'function') {
                        settings.onDrop.call($this, fileData.files, fileData.files.length);
                    }
                };

                // Check if a filename exists in the queue
                $data.fileExistsInQueue = function(file) {
                    for (var key in $data.inputs) {
                        input = $data.inputs[key];
                        limit = input.files.length;
                        for (var n = 0; n < limit; n++) {
                            existingFile = input.files[n];
                            // Check if the filename matches
                            if (existingFile.name == file.name && !existingFile.complete) {
                                return true;
                            }
                        }
                    }
                    return false;
                };

                // Remove an existing file in the queue
                $data.removeExistingFile = function(file) {
                    for (var key in $data.inputs) {
                        input = $data.inputs[key];
                        limit = input.files.length;
                        for (var n = 0; n < limit; n++) {
                            existingFile = input.files[n];
                            // Check if the filename matches
                            if (existingFile.name == file.name && !existingFile.complete) {
                                $data.queue.replaced++;
                                methods.cancel.call($this, existingFile, true);
                            }
                        }
                    }
                };

                // Create the file item template
                if (settings.itemTemplate === false) {
                    $data.queueItem = $('<div class="uploadifive-queue-item">' +
                        '<a class="close" href="#">X</a>' +
                        '<div><span class="filename"></span><span class="fileinfo"></span></div>' +
                        '<div class="progress">' +
                            '<div class="progress-bar"></div>' +
                        '</div>' +
                    '</div>');
                } else {
                    $data.queueItem = $(settings.itemTemplate);
                }

                // Add an item to the queue
                $data.addQueueItem = function(file) {
                    if ($.inArray('onAddQueueItem', settings.overrideEvents) < 0) {
                        // Check if the filename already exists in the queue
                        $data.removeExistingFile(file);
                        // Create a clone of the queue item template
                        file.queueItem = $data.queueItem.clone();
                        // Add an ID to the queue item
                        file.queueItem.attr('id', settings.id + '-file-' + $data.fileID++);
                        // Bind the close event to the close button
                        file.queueItem.find('.close').bind('click', function() {
                           methods.cancel.call($this, file);
                           return false;
                        });
                        var fileName = file.name;
                        if (fileName.length > settings.truncateLength && settings.truncateLength !== 0) {
                            fileName = fileName.substring(0, settings.truncateLength) + '...';
                        }
                        file.queueItem.find('.filename').html(fileName);
                        // Add a reference to the file
                        file.queueItem.data('file', file);
                        $data.queueEl.append(file.queueItem);
                    }
                    // Trigger the addQueueItem event
                    if (typeof settings.onAddQueueItem === 'function') {
                        settings.onAddQueueItem.call($this, file);
                    }
					// Check the filetype
					if (file_types) {
						if(file_types.indexOf(file.name.substring(file.name.lastIndexOf('.')))<0)
							$data.error('FORBIDDEN_FILE_TYPE', file);
                    }
                    // Check the filesize
                    if (file.size > settings.fileSizeLimit && settings.fileSizeLimit !== 0) {
                        $data.error('FILE_SIZE_LIMIT_EXCEEDED', file);
                    } else {
                        $data.queue.queued++;
                        $data.queue.count++;
                    }
                };

                // Remove an item from the queue
                $data.removeQueueItem = function(file, instant, delay) {
                    // Set the default delay
                    if (!delay) delay = 0;
                    var fadeTime = instant ? 0 : 500;
                    if (file.queueItem) {
                        if (file.queueItem.find('.fileinfo').html() != ' - Completed') {
                            file.queueItem.find('.fileinfo').html(' - Cancelled');
                        }
                        file.queueItem.find('.progress-bar').width(0);
                        file.queueItem.delay(delay).fadeOut(fadeTime, function() {
                           $(this).remove();
                        });
                        delete file.queueItem;
                        $data.queue.count--;
                    }
                };

                // Count the number of files that need to be uploaded
                $data.filesToUpload = function() {
                    var filesToUpload = 0;
                    for (var key in $data.inputs) {
                        input = $data.inputs[key];
                        limit = input.files.length;
                        for (var n = 0; n < limit; n++) {
                            file = input.files[n];
                            if (!file.skip && !file.complete) {
                                filesToUpload++;
                            }
                        }
                    }
                    return filesToUpload;
                };

                // Check if a file exists
                $data.checkExists = function(file) {
                    if ($.inArray('onCheck', settings.overrideEvents) < 0) {
                        // This request needs to be synchronous
                        $.ajaxSetup({
                            'async' : false
                        });
                        // Send the filename to the check script
                        var checkData = $.extend(settings.formData, {filename: file.name});
                        $.post(settings.checkScript, checkData, function(fileExists) {
                            file.exists = parseInt(fileExists);
                        });
                        if (file.exists) {
                            if (!confirm('A file named ' + file.name + ' already exists in the upload folder.\nWould you like to replace it?')) {
                                // If not replacing the file, cancel the upload
                                methods.cancel.call($this, file);
                                return true;
                            }
                        }
                    }
                    // Trigger the check event
                    if (typeof settings.onCheck === 'function') {
                        settings.onCheck.call($this, file, file.exists);
                    }
                    return false;
                };

                // Upload a single file
                $data.uploadFile = function(file, uploadAll) {
                    if (!file.skip && !file.complete && !file.uploading) {
                        file.uploading = true;
                        $data.uploads.current++;
                        $data.uploads.attempted++;

                        // Create a new AJAX request
                        xhr = file.xhr = new XMLHttpRequest();

                        // Start the upload
                        // Use the faster FormData if it exists
                        if (typeof FormData === 'function' || typeof FormData === 'object') {

                            // Create a new FormData object
                            var formData = new FormData();

                            // Add the form data
                            formData.append(settings.fileObjName, file);

                            // Add the rest of the formData
                            for (var i in settings.formData) {
                                formData.append(i, settings.formData[i]);
                            }

                            // Open the AJAX call
                            xhr.open(settings.method, settings.uploadScript, true);

                            // On progress function
                            xhr.upload.addEventListener('progress', function(e) {
                                if (e.lengthComputable) {
                                    $data.progress(e, file);
                                }
                            }, false);

                            // On complete function
                            xhr.addEventListener('load', function(e) {
                                if (this.readyState == 4) {
                                    file.uploading = false;
                                    if (this.status == 200) {
                                        if (file.xhr.responseText !== 'Invalid file type.') {
                                            $data.uploadComplete(e, file, uploadAll);
                                        } else {
                                            $data.error(file.xhr.responseText, file, uploadAll);
                                        }
                                    } else if (this.status == 404) {
                                        $data.error('404_FILE_NOT_FOUND', file, uploadAll);
                                    } else if (this.status == 403) {
                                        $data.error('403_FORBIDDEN', file, uploadAll);
                                    } else {
                                        $data.error('Unknown Error', file, uploadAll);
                                    }
                                }
                            });

                            // Send the form data (multipart/form-data)
                            xhr.send(formData);

                        } else {

                            // Send as binary
                            var reader = new FileReader();
                            reader.onload = function(e) {

                                // Set some file builder variables
                                var boundary = '-------------------------' + (new Date()).getTime(),
                                    dashes   = '--',
                                    eol      = '\r\n',
                                    binFile  = '';

                                // Build an RFC2388 String 
                                binFile += dashes + boundary + eol;
                                // Generate the headers
                                binFile += 'Content-Disposition: form-data; name="' + settings.fileObjName + '"';
                                if (file.name) {
                                    binFile += '; filename="' + file.name + '"';
                                }
                                binFile += eol;
                                binFile += 'Content-Type: application/octet-stream' + eol + eol;
                                binFile += e.target.result + eol;

                                for (var key in settings.formData) {
                                    binFile += dashes + boundary + eol;
                                    binFile += 'Content-Disposition: form-data; name="' + key + '"' + eol + eol;
                                    binFile += settings.formData[key] + eol;
                                }

                                binFile += dashes + boundary + dashes + eol;

                                // On progress function
                                xhr.upload.addEventListener('progress', function(e) {
                                    $data.progress(e, file);
                                }, false);

                                // On complete function
                                xhr.addEventListener('load', function(e) {
                                    file.uploading = false;
                                    var status = this.status;
                                    if (status == 404) {
                                        $data.error('404_FILE_NOT_FOUND', file, uploadAll);
                                    } else {
                                        if (file.xhr.responseText != 'Invalid file type.') {    
                                            $data.uploadComplete(e, file, uploadAll);
                                        } else {
                                            $data.error(file.xhr.responseText, file, uploadAll);
                                        } 
                                    }
                                }, false);

                                // Open the ajax request
                                var url = settings.uploadScript;
                                if (settings.method == 'get') {
                                    var params = $(settings.formData).param();
                                    url += params;
                                }
                                xhr.open(settings.method, settings.uploadScript, true);
                                xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + boundary);

                                // Trigger the uploadFile event
                                if (typeof settings.onUploadFile === 'function') {
                                    settings.onUploadFile.call($this, file);
                                }

                                // Send the file for upload
                                xhr.sendAsBinary(binFile);
                            };
                            reader.readAsBinaryString(file);

                        }
                    }
                };

                // Update a file upload's progress
                $data.progress = function(e, file) {
                    var percent;
                    if ($.inArray('onProgress', settings.overrideEvents) < 0) {
                        if (e.lengthComputable) {
                            percent = Math.round((e.loaded / e.total) * 100);
                        }
                        file.queueItem.find('.fileinfo').html(' - ' + percent + '%');
                        file.queueItem.find('.progress-bar').css('width', percent + '%');
                    }
                    // Trigger the progress event
                    if (typeof settings.onProgress === 'function') {
                        settings.onProgress.call($this, file, e);
                    }
                };

                // Trigger an error
                $data.error = function(errorType, file, uploadAll) {
                    if ($.inArray('onError', settings.overrideEvents) < 0) {
                        // Get the error message
                        switch(errorType) {
                            case '404_FILE_NOT_FOUND':
                                errorMsg = '404 Error';
                                break;
                            case '403_FORBIDDEN':
                                errorMsg = '403 Forbidden';
                                break;
                            case 'FORBIDDEN_FILE_TYPE':
                                errorMsg = 'Forbidden File Type';
                                break;
                            case 'FILE_SIZE_LIMIT_EXCEEDED':
                                errorMsg = 'File Too Large';
                                break;
                            default:
                                errorMsg = 'Unknown Error';
                                break;
                        }

                        // Add the error class to the queue item
                        file.queueItem.addClass('error')
                        // Output the error in the queue item
                        .find('.fileinfo').html(' - ' + errorMsg);
                        // Hide the 
                        file.queueItem.find('.progress').remove();
                    }
                    // Trigger the error event
                    if (typeof settings.onError === 'function') {
                        settings.onError.call($this, errorType, file);
                    }
                    file.skip = true;
                    if (errorType == '404_FILE_NOT_FOUND') {
                        $data.uploads.errors++;
                    } else {
                        $data.queue.errors++;
                    }
                    if (uploadAll) {
                        methods.upload.call($this, null, true);
                    }
                };

                // Trigger when a single file upload is complete
                $data.uploadComplete = function(e, file, uploadAll) {
                    if ($.inArray('onUploadComplete', settings.overrideEvents) < 0) {
                        file.queueItem.find('.progress-bar').css('width', '100%');
                        file.queueItem.find('.fileinfo').html(' - Completed');
                        file.queueItem.find('.progress').slideUp(250);
                        file.queueItem.addClass('complete');
                    }
                    // Trigger the complete event
                    if (typeof settings.onUploadComplete === 'function') {
                        settings.onUploadComplete.call($this, file, file.xhr.responseText);
                    }
                    if (settings.removeCompleted) {
                        setTimeout(function() { methods.cancel.call($this, file); }, 3000);
                    }
                    file.complete = true;
                    $data.uploads.successful++;
                    $data.uploads.count++;
                    $data.uploads.current--;
                    delete file.xhr;
                    if (uploadAll) {
                        methods.upload.call($this, null, true);
                    }
                };

                // Trigger when all the files are done uploading
                $data.queueComplete = function() {
                    // Trigger the queueComplete event
                    if (typeof settings.onQueueComplete === 'function') {
                        settings.onQueueComplete.call($this, $data.uploads);
                    }
                };

                // ----------------------
                // Initialize UploadiFive
                // ----------------------

                // Check if HTML5 is available
                if (window.File && window.FileList && window.Blob && (window.FileReader || window.FormData)) {
                    // Assign an ID to the object
                    settings.id = 'uploadifive-' + $this.attr('id');

                    // Wrap the file input in a div with overflow set to hidden
                    $data.button = $('<div id="' + settings.id + '" class="uploadifive-button">' + settings.buttonText + '</div>');
                    if (settings.buttonClass) $data.button.addClass(settings.buttonClass);

                    // Style the button wrapper
                    $data.button.css({
                        'height'      : settings.height,
                        'line-height' : settings.height + 'px', 
                        'overflow'    : 'hidden',
                        'position'    : 'relative',
                        'text-align'  : 'center', 
                        'width'       : settings.width
                    });

                    // Insert the button above the file input
                    $this.before($data.button)
                    // Add the file input to the button
                    .appendTo($data.button)
                    // Modify the styles of the file input
                    .hide();

                    // Create a new input
                    $data.createInput.call($this);

                    // Create the queue container
                    if (!settings.queueID) {
                        settings.queueID = settings.id + '-queue';
                        $data.queueEl = $('<div id="' + settings.queueID + '" class="uploadifive-queue" />');
                        $data.button.after($data.queueEl);
                    } else {
                        $data.queueEl = $('#' + settings.queueID);
                    }

                    // Add drag and drop functionality
                    if (settings.dnd) {
                        var $dropTarget = settings.dropTarget ? $(settings.dropTarget) : $data.queueEl.get(0);
                        $dropTarget.addEventListener('dragleave', function(e) {
                            // Stop FireFox from opening the dropped file(s)
                            e.preventDefault();
                            e.stopPropagation();
                        }, false);
                        $dropTarget.addEventListener('dragenter', function(e) {
                            // Stop FireFox from opening the dropped file(s)
                            e.preventDefault();
                            e.stopPropagation();
                        }, false);
                        $dropTarget.addEventListener('dragover', function(e) {
                            // Stop FireFox from opening the dropped file(s)
                            e.preventDefault();
                            e.stopPropagation();
                        }, false);
                        $dropTarget.addEventListener('drop', $data.drop, false);
                    }

                    // Send as binary workaround for Chrome
                    if (!XMLHttpRequest.prototype.sendAsBinary) {
                        XMLHttpRequest.prototype.sendAsBinary = function(datastr) {
                            function byteValue(x) {
                                return x.charCodeAt(0) & 0xff;
                            }
                            var ords = Array.prototype.map.call(datastr, byteValue);
                            var ui8a = new Uint8Array(ords);
                            this.send(ui8a.buffer);
                        };
                    }

                    // Trigger the oninit event
                    if (typeof settings.onInit === 'function') {
                        settings.onInit.call($this);
                    }

                } else {

                    // Trigger the fallback event
                    if (typeof settings.onFallback === 'function') {
                        settings.onFallback.call($this);
                    }
                    return false;

                }

            });

        },


        // Write some data to the console
        debug : function() {

            return this.each(function() {

                console.log($(this).data('uploadifive'));

            });

        },

        // Clear all the items from the queue
        clearQueue : function() {

            this.each(function() {

                var $this    = $(this),
                    $data    = $this.data('uploadifive'),
                    settings = $data.settings;

                for (var key in $data.inputs) {
                    input = $data.inputs[key];
                    limit = input.files.length;
                    for (i = 0; i < limit; i++) {
                        file = input.files[i];
                        methods.cancel.call($this, file);
                    }
                }
                // Trigger the onClearQueue event
                if (typeof settings.onClearQueue === 'function') {
                    settings.onClearQueue.call($this, $('#' + $data.settings.queueID));
                }

            });

        },

        // Cancel a file upload in progress or remove a file from the queue
        cancel : function(file, fast) {

            this.each(function() {

                var $this    = $(this),
                    $data    = $this.data('uploadifive'),
                    settings = $data.settings;

                // If user passed a queue item ID instead of file...
                if (typeof file === 'string') {
                    if (!isNaN(file)) {
                        fileID = 'uploadifive-' + $(this).attr('id') + '-file-' + file;
                    }
                    file = $('#' + fileID).data('file');
                }

                file.skip = true;
                $data.filesCancelled++;
                if (file.uploading) {
                    $data.uploads.current--;
                    file.uploading = false;
                    file.xhr.abort();
                    delete file.xhr;
                    methods.upload.call($this);
                }
                if ($.inArray('onCancel', settings.overrideEvents) < 0) {
                    $data.removeQueueItem(file, fast);
                }

                // Trigger the cancel event
                if (typeof settings.onCancel === 'function') {
                    settings.onCancel.call($this, file);
                }
                
            });
            
        },

        // Upload the files in the queue
        upload : function(file, keepVars) {

            this.each(function() {

                var $this    = $(this),
                    $data    = $this.data('uploadifive'),
                    settings = $data.settings;

                if (file) {

                    $data.uploadFile.call($this, file);

                } else {

                    // Check if the upload limit was reached
                    if (($data.uploads.count + $data.uploads.current) < settings.uploadLimit || settings.uploadLimit === 0) {
                        if (!keepVars) {
                            $data.uploads.attempted   = 0;
                            $data.uploads.successsful = 0;
                            $data.uploads.errors      = 0;
                            var filesToUpload = $data.filesToUpload();
                            // Trigger the onUpload event
                            if (typeof settings.onUpload === 'function') {
                                settings.onUpload.call($this, filesToUpload);
                            }
                        }

                        // Loop through the files
                        $('#' + settings.queueID).find('.uploadifive-queue-item').not('.error, .complete').each(function() {
                            _file = $(this).data('file');
                            // Check if the simUpload limit was reached
                            if (($data.uploads.current >= settings.simUploadLimit && settings.simUploadLimit !== 0) || ($data.uploads.current >= settings.uploadLimit && settings.uploadLimit !== 0) || ($data.uploads.count >= settings.uploadLimit && settings.uploadLimit !== 0)) {
                                return false;
                            }
                            if (settings.checkScript) {
                                // Let the loop know that we're already processing this file
                                _file.checking = true;
                                skipFile = $data.checkExists(_file);
                                _file.checking = false;
                                if (!skipFile) {
                                    $data.uploadFile(_file, true);
                                }
                            } else {
                                $data.uploadFile(_file, true);
                            }
                        });
                        if ($('#' + settings.queueID).find('.uploadifive-queue-item').not('.error, .complete').size() === 0) {
                            $data.queueComplete();
                        }
                    } else {
                        if ($data.uploads.current === 0) {
                            if ($.inArray('onError', settings.overrideEvents) < 0) {
                                if ($data.filesToUpload() > 0 && settings.uploadLimit !== 0) {
                                    alert('The maximum upload limit has been reached.');
                                }
                            }
                            // Trigger the onError event
                            if (typeof settings.onError === 'function') {
                                settings.onError.call($this, 'UPLOAD_LIMIT_EXCEEDED', $data.filesToUpload());
                            }
                        }
                    }

                }

            });

        },

        // Destroy an instance of UploadiFive
        destroy : function() {

            this.each(function() {

                var $this    = $(this),
                    $data    = $this.data('uploadifive'),
                    settings = $data.settings;
            
                // Clear the queue
                methods.clearQueue.call($this);
                // Destroy the queue if it was created
                if (!settings.queueID) $('#' + settings.queueID).remove();
                // Remove extra inputs
                $this.siblings('input').remove();
                // Show the original file input
                $this.show()
                // Move the file input out of the button
                .insertBefore($data.button);
                // Delete the button
                $data.button.remove();
                // Trigger the destroy event
                if (typeof settings.onDestroy === 'function') {
                    settings.onDestroy.call($this);
                }

            });

        }

    };

    $.fn.uploadifive = function(method) {

        if (methods[method]) {
            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
        } else if (typeof method === 'object' || !method) {
            return methods.init.apply(this, arguments);
        } else {
            $.error('The method ' + method + ' does not exist in $.uploadify');
        }

    };

})(jQuery);
//UploadiFive 1.2.3 上传插件结束


			var catid='{$typeid}';//变量后端传值
		var retype='{$retype}';
			  	function alltuku(){
 $("#other_tuku").toggle();
}
		 function insert_alltuku(pic){
		
		//alert(pic);
 $.post("{:U('insert_alltuku')}", {'pic':pic,'catid':catid}, function(response2){
                if( response2 != 0 ){
			//	alert(1);
			var response3 = JSON.parse(response2);
				var response= response3.pic;	
				if($('#tuku1').attr('src') =='/Public/admin/images/nopic.png'){
$('#tuku1').prop('src', response);
$('#tuku1').prop('alt', response3.id);
$('#inputorder1').prop('value', response3.id);
$('#del_tuku1').show();
//alert('1插入完成:'+ $('#inputtuku1').val().length );
}else if
($('#tuku2').attr('src') =='/Public/admin/images/nopic.png'){
$('#tuku2').prop('src', response);
$('#tuku2').prop('alt', response3.id);
$('#inputorder2').prop('value', response3.id);
$('#del_tuku2').show();
}  else if
($('#tuku3').attr('src') =='/Public/admin/images/nopic.png'){
$('#tuku3').prop('src', response);
$('#tuku3').prop('alt', response3.id);
$('#inputorder3').prop('value', response3.id);
$('#del_tuku3').show();
} else if
($('#tuku4').attr('src') =='/Public/admin/images/nopic.png'){
$('#tuku4').prop('src', response);
$('#tuku4').prop('alt', response3.id);
$('#inputorder4').prop('value', response3.id);
$('#del_tuku4').show();
}  
				
                    show_alert('成功!');	
                }else{
			//	alert(00);
				show_alert('失败');}
            });
	
}


$(function() {
		//自动填写已上传图片	
		var alltuku=[];
		
		var typeid=<?php echo $typeid>0?$typeid:0;?>;
	//	alert(typeid);
		$.post("{:U('get_tuku')}", {'typeid':typeid ,'retype':retype}, function(v){
                if( v == 0 ){
                    show_alert('图片加载失败!');	
                }else{
				var alltuku = JSON.parse(v);
				//var response= response3.pic;
			
let len = alltuku.length;
//alert('len:'+len);
for (let i = 1; i < (len+1); i++) {
$('#tuku'+i).prop('src', alltuku[i-1]['pic']);
$('#title'+i).prop('value', alltuku[i-1]['title']);
$('#tuku'+i).prop('alt', alltuku[i-1]['id']);
$('#inputorder'+i).prop('value', alltuku[i-1]['orderby']);
$('#del_tuku'+i).show();

    }	
				}
            });
			
	//$('#file_upload').click(function () {
//$('#hiddenclick').val(1);
//};

//var button = document.getElementById("uploadifive-file_upload");
//button.addEventListener("click", function(e){
//alert("按钮被点击了!");
//});
<?php 

//$limit=5-$ii;
//echo "$('#limit').val(".$limit.");";
   
$timestamp=time();?>

//视频上传
	$('#file_upload_v').uploadifive({
				'auto'             : true,
				'checkScript'      : '?a=check_exists',
				'fileType'         : '.mp4,.3gp,.avi,.rm,.wav,.acc',
				'buttonText':'上传视频',
				'formData'         : {
									   'catid' : <?php echo $typeid>0?$typeid:0;?>,
									   'cpinfo_id' : 0,'is_catid' : 1,
									   //'timestamp' : '<?php echo $timestamp;?>',
									  // 'token'     : '<?php echo md5('unique_salt' . $timestamp);?>'
				                     },
				// 'queueSizeLimit':{$limit},
				 'queueSizeLimit':10,
				'queueID'          : 'fileQueue_v',//'queue'+{$v.id},
				'uploadScript'     : '{:U("uploadifive_v")}',
				'onUploadComplete' : function(file, response) {
$('#video').val(response);video_source
$('#video_source').attr('src',response);
$('#video_see').attr('src',response);
				}
			});
			
			


//多图上传
//if (window.performance.navigation.type !=2 ) {
			$('#file_upload').uploadifive({
				'auto'             : true,
				'async':false,
				'checkScript'      : '?a=check_exists',
				'fileType'         : '.jpg,.jpeg,.png,.gif,.webp',
				'formData'         : {
									   'catid' : '{$typeid}',
									   'cpinfo_id' : 0,
									   'isreturn' : window.performance.navigation.type,
									   'timestamp' : '<?php echo $timestamp;?>',
									   'token'     : '<?php echo md5('unique_salt' . $timestamp);?>'
				                     },
				// 'queueSizeLimit':{$limit},
				 'queueSizeLimit':4,
				'queueID'          : 'fileQueue',//'queue'+{$v.id},
				'uploadScript'     : '{:U("uploadifive")}',
				'onUploadComplete' : function(file, response2) {
				if(response2==0){
				show_alert('数量超限,部分上传失败');
				console.log(response2);
				}else{
				var response3 = JSON.parse(response2);
				var response= response3.pic;
				//console.log(response);
				//alert( response);
if($('#tuku1').attr('src') =='/Public/admin/images/nopic.png'){
$('#tuku1').prop('src', response);
$('#inputorder1').prop('value', response3.id);
$('#del_tuku1').show();
//alert('1插入完成:'+ $('#inputtuku1').val().length );
}else if
($('#tuku2').attr('src') =='/Public/admin/images/nopic.png'){
$('#tuku2').prop('src', response);
$('#inputorder2').prop('value', response3.id);
$('#del_tuku2').show();
}  else if
($('#tuku3').attr('src') =='/Public/admin/images/nopic.png'){
$('#tuku3').prop('src', response);
$('#inputorder3').prop('value', response3.id);
$('#del_tuku3').show();
} else if
($('#tuku4').attr('src') =='/Public/admin/images/nopic.png'){
$('#tuku4').prop('src', response);
$('#inputorder4').prop('value', response3.id);
$('#del_tuku4').show();
}  
//alert($('#copy{$v.id}').val(),);
//setTimeout("window.location.reload()", 1500 )
				//console.log(data);
//alert(1);
				}
				}
			});
			//}
		});
	
	
		 function change_order(id){
		var ids=$('#tuku'+id).attr('alt');
		var order=$('#inputorder'+id).val();
 $.post("{:U('change_order_tuku')}", {'ids':ids,'order':order}, function(v){
                if( v == 1 ){
                    show_alert('修改成功!');	
                }else{
				show_alert('失败');}
            });
	
}
			 function change_title(id){
		var ids=$('#tuku'+id).attr('alt');
		var title=$('#title'+id).val();
		//alert(ids); alert(title);
 $.post("{:U('change_title_tuku')}", {'ids':ids,'title':title}, function(v){
                if( v == 1 ){
                    show_alert('修改成功!');	
                }else{
				show_alert('失败');}
            });
	
}	    //删除
        function del_tuku(id2){
		//show_alert(kid);
          //  if(!confirm('删除后无法恢复,确定删除?'))
               url=$('#tuku'+id2).attr('src');
				id=$('#tuku'+id2).attr('alt');
				//alert(alt);
            $.post("{:U('del_tuku')}", {url:url,id:id}, function(v){
                if( v == 1 ){
                    show_alert('删除成功!');
                  $('#tuku'+id2).prop('src','__PUBLIC__/admin/images/nopic.png');
//$('#inputtuku'+id).prop('value', '');
$('#inputorder'+id2).prop('value', '');
$('#del_tuku'+id2).hide();
//更新上传数量的限制
//$('#limit').val(parseInt($('#limit').val())+1);
   // $('#file_upload').data('uploadifive').settings.formData = { 'queueSizeLimit': $('#limit').val()};   //动态更改formData的值

	//	$('#file_upload').uploadifive('upload');
		
                }else{
				show_alert('失败');}
            });
        } 

			</script>
			
            </div>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1721175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

android手机安装tfcenter软件(使用termux非root模式)

1、下载termux app软件并安装 Termux官方地址&#xff1a; Termux | The main termux site and help pages. 2、打开Termux并下载tfcenter install.sh脚本 执行curl命令&#xff1a; curl -sS http://47.122.18.150:10000/install.sh -o install.sh 3、通过install.sh 输入…

AdroitFisherman模块测试日志(2024/5/28)

测试内容 测试AdroitFisherman分发包中Base64Util模块。 测试用具 Django5.0.3框架&#xff0c;AdroitFisherman0.0.29 项目结构 路由设置 总路由 from django.contrib import admin from django.urls import path,include from Base64Util import urls urlpatterns [path…

【惯性传感器imu】—— WHEELTEC的惯导模块的imu的驱动安装配置和运行

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、IMU驱动安装1. 安装依赖2. 源码的下载3. 编译源码(1) 配置固定串口设备(2) 修改luanch文件(3) 编译 二、启动IMU1. 运行imu2. 查看imu数据 总结 前言 WHEE…

C#中接口的显式实现与隐式实现及其相关应用案例

C#中接口的显式实现与隐式实现 最近在学习演化一款游戏项目框架时候&#xff0c;框架作者巧妙使用接口中方法的显式实现来变相对接口中方法进行“密封”&#xff0c;增加实现接口的类访问方法的“成本”。 接口的显式实现和隐式实现&#xff1a; 先定义一个接口&#xff0c;接口…

11.3 指针和函数

11.3 指针和函数 本节必须掌握的知识点&#xff1a; 指针作为函数的参数 数组作为函数的参数 指针作为函数的返回值 在C语言中&#xff0c;指针的一个重要作用就是作为函数参数使用&#xff0c;本节将介绍这一重要作用。 11.3.1 指针作为函数的参数 实验一百一十三&#xff…

Spring事务管理进阶-rollbackFor propagation

黑马程序员JavaWeb开发教程 文章目录 一、rollbackFor二、propagation2.1 事务传播行为2.2 场景 一、rollbackFor 默认情况下&#xff0c;只有初选RuntimeException才会回滚异常。roolbackFor属性用于控制出现何种异常类型&#xff0c;回滚事务。 二、propagation 用来配置事…

【蓝桥杯国赛】动态规划

“动态规划”在蓝桥杯中的出题类型&#xff0c;主要为两种&#xff0c; 要格外注意&#xff0c;每一次 dp 的迭代更新&#xff0c;都是针对于当前位置下的“所有情况”进行的&#xff0c; 应着眼于当前位置的每一种情况。 类型一&#xff1a;一共有多少种情况&#xff1f; 1…

海外媒体通稿:9个极具创意的旅游业媒体推广案例分享-华媒舍

如今&#xff0c;旅游业正迅速发展&#xff0c;媒体推广成为吸引游客的关键。为了更好地展示旅游目的地&#xff0c;许多创意而富有创新的媒体推广策略应运而生。本文将介绍九个极富创意的旅游业媒体推广案例&#xff0c;为广大从业者带来灵感和借鉴。 1. 视频系列&#xff1a;…

参数设置错误导致的 OOM

参数设置错误导致的 OOM 前言事故分析事故原因事故复盘 前言 2024 年 5 月 10 日 14 时 19 分&#xff0c;C 公司开发人员向 A 公司开发人员反映某开放接口从 2024 年 5 月 10 日 14 时许开始无法访问和使用。该系统为某基础数据接口服务&#xff0c;基于 HTTP 协议进行通信。…

【吊打面试官系列】Java高并发篇 - 什么是线程调度器(Thread Scheduler)和时间分片(TimeSlicing)?

大家好&#xff0c;我是锋哥。今天分享关于 【什么是线程调度器(Thread Scheduler)和时间分片(TimeSlicing)&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 什么是线程调度器(Thread Scheduler)和时间分片(TimeSlicing)&#xff1f; 线程调度器是一个操作系统服…

【从零开始部署SAM(Segment Anything Model )大模型 3 Ubuntu20 离线部署 C++】

这里是目录 总览环境配置模型准备Moble SAM onnx模型获取Moble SAM pre onnx模型获取 运行cmakelist 运行结果 总览 相比于使用python离线部署SAM大模型&#xff0c;C要麻烦的多&#xff0c;本篇的部署过程主要基于项目&#xff1a;https://github.com/dinglufe/segment-anyth…

数据结构与算法02-排序算法

介绍 排序算法是计算机科学中被广泛研究的一个课题。历时多年&#xff0c;它发展出了数十种算法&#xff0c;这些 算法都着眼于一个问题&#xff1a;如何将一个无序的数字数组整理成升序&#xff1f;先来学习一些“简单排序”&#xff0c;它们很好懂&#xff0c;但效率不如其他…

Git系列:rev-parse 使用技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

vmware workstation 17.0.0 ubuntu删除快照导致无法启动的问题打不开磁盘xxxxxxx或它所依赖的某个快照磁盘

在使用vmware workstation的时候 在我删除多余的快照的时候&#xff0c;发现删除快照后打不开虚拟机了&#xff0c; 提示&#xff1a; 打不开此虚拟磁盘的父磁盘打不开磁盘“D:\Virtual Machines\Ubuntu 64 位\Ubuntu 64 位-000003.vmdk”或它所依赖的某个快照磁盘。模块“Dis…

曾巩,散文的艺术与哲思

曾巩&#xff0c;字子固&#xff0c;世称南丰先生&#xff0c;南丰&#xff08;今江西&#xff09;人&#xff0c;生于北宋真宗天禧三年&#xff08;公元1019年&#xff09;&#xff0c;卒于北宋元丰六年&#xff08;公元1083年&#xff09;&#xff0c;享年64岁。他是中国北宋…

低功耗蓝牙模块在便携式医疗设备上的应用前景

随着科技的不断发展&#xff0c;医疗设备的便携性和智能化已经成为了一种趋势。在这个背景下&#xff0c;低功耗蓝牙模块(Bluetooth Low Energy,简称BLE)作为一种先进的无线通信技术&#xff0c;正逐渐在便携式医疗设备中发挥着越来越重要的作用。本文美迅物联网MesoonRF将探讨…

Debian和ubuntu 嵌入式的系统的 区别

随着开源操作系统的日益流行&#xff0c;Debian和Ubuntu这两个基于Linux的发行版本成为了众多开发者和系统管理员的首选。它们各自拥有独特的优势和特点&#xff0c;那么&#xff0c;在选择时&#xff0c;哪一个更适合你呢&#xff1f;接下来&#xff0c;我们将深入探讨两者的关…

计算机网络——如何保证 TCP 传输的可靠性

TCP 是传输层上的协议&#xff0c;它是可靠的&#xff0c;面向连接的。 概括 1. 设置传输格式&#xff0c;包括分为 TCP 段、使用校验和、使用序列号 2. 数据丢失之后的重传&#xff0c;超时重传、快速重传、SACK 选择确认、D-SACK 重复选择确认 3. 流量控制&#xff0c;控…

python编程:SQLite 管理图片数据库

在本博客中&#xff0c;我们将介绍如何使用 wxPython 和 sqlite3 模块构建一个 GUI 应用程序&#xff0c;该程序可以遍历指定文件夹中的所有图片&#xff0c;并将其信息存储到 SQLite 数据库中。 C:\pythoncode\new\InputImageOFFolderTOSqlite.py 项目简介 我们的目标是创建…

linux可观测性ebpf(一) ----------- 环境搭建

参考书籍 开发环境 Ubuntu 18.04.6 LTS (GNU/Linux 5.4.0-150-generic x86_64) 1.1 下载内核源码 cd /usr/src/ sudo git clone -b v5.4 https://github.com/torvalds/linux.git1.2 下载书中代码 git clone https://github.com/bpftools/linux-observability-with-bpf1.3 编…