劃詞彈出2級菜單

項目中用到的類似於分享到weibo的劃詞彈出菜單。大致思路是有一個隱藏層,內部放着隱藏菜單,當選中某個頁面空間的文字時,即會彈出此菜單,點擊則可以將文詞切換至彈出窗口,然後進行編輯。

1.放所隱藏菜單層的代碼

<style>
#menu_layer{display:none;}
#menu_layer { width: 100px; border: 1px solid #CCC; border-bottom:none;}
#menu_layer ul { list-style: none; margin: 0px; padding: 0px; }
#menu_layer ul li { background: #FFFFAA; padding: 0px 8px; height: 26px; line-height: 26px; border-bottom: 1px solid #eeee99; position:relative;}
#menu_layer ul li a{color:#930000;}
#menu_layer ul li ul {display:none; position: absolute; left: 100px; top: 0px; width:100px; border:1px solid #ccc; border-bottom:none; background:#fff;}
#menu_layer ul li.current ul { display:block;background:#fff;}
#menu_layer ul li:hover ul { display:block;}
</style>


2.爲文本框加上劃詞選擇動作,和彈出菜單層

var menu_layer = document.getElementById("menu_layer");
//alert(menu_layer);

var com_special = document.getElementById("com_special");
var $testmenu_layer = function(eleShare, eleContainer) {
	var eleTitle = document.getElementsByTagName("title")[0];
	eleContainer = eleContainer || document;
	var funGetSelectTxt = function() {
		var txt = "";
		if(document.selection) {
			txt = document.selection.createRange().text;	// IE
		} else {
			txt = document.getSelection();
		}
		return txt.toString();
	};
	eleContainer.onmouseup = function(e) {
		e = e || window.event;
		var txt = funGetSelectTxt(), sh = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
	//	alert(sh);
	//	alert(e.clientX);
		var left = (e.clientX - 500 < 0) ? e.clientX + 20 : e.clientX - 180, top = e.clientY + sh + 20;
	//	var left = e.clientX +20, top = e.clientY + sh + 20;;
	// 	alert(left+"_"+top);
		if (txt) {
		   menu_layer.style.position = "absolute";
		   menu_layer.style.left =left + "px";
			menu_layer.style.top = top + "px";
			menu_layer.style.display = "inline";
	//	    alert("11");
	//	    alert(menu_layer.style.left);
 		} else {
			menu_layer.style.display = "none";
		}
	};
}(menu_layer,com_special);

function GetSelectTxt(){
       var txt = "";
		if(document.selection) {
			txt = document.selection.createRange().text;	// IE
		} else {
			txt = document.getSelection();
		}
		return txt.toString();

}

3.將選中的文字傳出打開新的窗口

function seletCharval(fCharCode,selComment,selVeriComment,oldVeriComment,imagineFlag)
{   
    var materialCode= document.getElementById("materialCode").value;
  alert(materialCode);
    var txt=GetSelectTxt();
    alert(txt);
	selComment = replaceAllSpecStr(selComment); 
	selVeriComment = replaceAllSpecStr(selVeriComment);  
	oldVeriComment = replaceAllSpecStr(oldVeriComment);
	var urlStr = '<%=request.getContextPath()%>/order/edit/selectedCodeNew.jsp?qType=eva&fCharCode='+fCharCode+'&selComment='+selComment;
    urlStr += '&selVeriComment='+selVeriComment;  
	urlStr += '&clerkFlag=F';
	urlStr += '&showTechDesc='+showTechDesc;
	urlStr += '&oldVeriComment=' +oldVeriComment;
	urlStr += '&txt=' +txt;
	urlStr += '&prodId=code_'+materialCode;
	 urlStr+='&imagineFlag='+imagineFlag;
	window.open(urlStr,'selCode','width=600,height=400,scrollbars=yes, status=yes,resizable=yes,top=400,left=400'); 
}




//document.οnmοusedοwn=gosite;


4.爲隱藏層中的列表綁定樣式//爲dd標籤綁定事件

startList = function() {
if (document.all&&document.getElementById) {
navRoot = document.getElementById("menu_layer");
var allli = navRoot.getElementsByTagName("li")
for (i=0; i<allli.length; i++) {
node = allli[i];
node.οnmοuseοver=function() {
this.className+=" current";
}
node.οnmοuseοut=function() {
this.className=this.className.replace(" current", "");
}
}
}
}
window.οnlοad=startList;
5.動態設置隱藏菜單的內容
//設置右鍵維護菜單中的內容  --duansy
//function showItemList_duansy(curSelectStr)
function showItemList_duansy(curSelectStr){
	//	 alert("nn");
	//	 alert(grpList.length);
		var obj = oc_const.refreshAllConfig(curSelectStr+getThreeAreaSeclectCode(),getInnerHtml('charAndValBlock'),userTypeJs,'','selectItemReturn');
		//var obj = oc_const.refreshAllConfigNew(curSelectStr+getThreeAreaSeclectCode(),convertString,userTypeJs,'');

  
		 
		obj1 = obj;
		 afterMsg = '';  
		 var tmpInnerStr =new Array();
	//	 	 alert('hah');
		  tmpInnerStr.push('<ul>');
	    for(var grpCt = 0; grpCt < grpList.length; grpCt++)
		 { 
		 	var groupObj = grpList[grpCt]; 
		   tmpInnerStr.push('<li>');
		//   alert('22');
		   tmpInnerStr.push('<a href=\'http://www.zzjs.net\'>'+groupObj.grpName+'</a>');
		   tmpInnerStr.push('<ul>');
		   for(var i = 0; i < obj.length; i++){
		       var charListGrpId = obj[i].chargrp_id;
				var charId = obj[i].char_id; 
				var charCode = obj[i].char_code;
				 var charImagineFlag = obj[i].char_imagineFlag;
		//	    alert(charImagineFlag);
				var showWayCode = obj[i].show_way_code;
			    var charClassCode = obj[i].char_class_code; 
                var benecessaryJs = obj[i].benecessary;
                var commonFlagJs = obj[i].common_flag;
                //遍歷屬性下面的屬性值
                	for(var k = 0; k < obj[i].values.length; k++)
						{
							 var charvalId = obj[i].values[k].charval_id; 
							 var picId = obj[i].values[k].pic_id;
							
						     if(obj[i].values[k].charval_code == undefined || obj[i].values[k].selectedFlag!='T')
							 {
							     continue;
							 } 

							 var tmpVeriCmt = getItemVerification(charCode,obj[i].values[k].charval_code,itemCommentObjList);
							 var tmpCmt = getItemComment(charCode,obj[i].values[k].charval_code,itemCommentObjList);  
							 var standFlagJs = obj[i].values[k].standFlag;//是否標配
                             var oldVeriCmt ="";
                             if(charCode=="CFT"){
                                oldVeriCmt = getItemVerification(charCode,obj[i].values[k].charval_code,itemCommentObjList);;
                             }
                             }
                
            
                if(charListGrpId == groupObj.grpId ){
                 tmpInnerStr.push('<li><a href=\'#dsy\' title=\''+obj[i].char_name+'\' onClick="seletCharval(\''+charCode+'\',\''+tmpCmt+'\',\''+tmpVeriCmt+'\',\''+oldVeriCmt+'\',\''+charImagineFlag+'\')">'+  obj[i].char_name+'</a></li>');
                obj[i].char_name
                }
		   }
		  tmpInnerStr.push('</ul>');
		  tmpInnerStr.push('</li>');
		   }
		  tmpInnerStr.push('</ul>');
		 alert(tmpInnerStr.join(""));
		  document.getElementById("menu_layer").innerHTML=tmpInnerStr.join("");
		
		}
		
//調用顯示初始化內部的內容
showItemList_duansy( paraStr+ charIdStr); 




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