1. 程式人生 > 其它 >input和div聚焦,再選擇下拉框,將選擇的資料動態新增到聚焦處

input和div聚焦,再選擇下拉框,將選擇的資料動態新增到聚焦處

技術標籤:筆記html5cssjavascript

效果圖

在這裡插入圖片描述

程式碼塊

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<style type="text/css">
		label {
			display: inline-block;
			width: 150px;
			text-align: right;
		}

		.theme {
width: 65.6%; } select { width: 150px; } .emailContent { display: inline-block; resize: none; width: 65.6%; height: 130px; border: 1px solid rgb(118, 118, 118); padding: 2px; margin-top: 20px; } </style> <body> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"
></script> <div> <label>主題:</label><input type="text" name="name" value="" id="theme" class="theme input" /> <select class="select" onchange="selectChange(value)"> <option value=""
>請選擇</option> <option value="0">提案機構</option> <option value="1">提案人</option> <option value="2">專利卷號</option> <option value="3">申請號</option> <option value="4">專利名稱</option> <option value="5">內部名稱</option> </select> </div> <div> <label>郵件內容:</label> <div contenteditable=true class="emailContent input" id="emailContent"></div> </div> <script type="text/javascript"> var lastInput = null; $(function() { //滑鼠聚焦後獲取對應的 html標籤 var inputs = document.getElementsByClassName("input"); for (i = 0; i < inputs.length; i++) { inputs[i].onfocus = function() { lastInput = this; } } }); function selectChange(m) { //獲取下拉框中要增加的變數 var themeText = $(".select option:selected").text(); //去重(通過indexOf,判斷主題和郵件內容中是否存在,若不存在則增加,若存在不增加); var themeIndex = $("#theme").val().indexOf("{" + themeText + "}"); var emailContentIndex = $("#emailContent").html().indexOf("{" + themeText + "}"); if(lastInput != null){ if (lastInput.id == "theme") { //給主題動態增加內容 lastInput.focus(); if (m != "" && themeIndex == -1) { lastInput.value = lastInput.value.substr(0, lastInput.selectionStart) + "{" + themeText + "}" + lastInput.value.substring( lastInput.selectionStart, lastInput.value.length); } else {} } else if (lastInput.id == "emailContent") { //給郵件內容動態增加內容 if (m != "" && emailContentIndex == -1) { insertHtmlAtCaret("{" + themeText + "}"); } else {} } }else{ alert("請聚焦") } } //div 游標處動態增加內容 function insertHtmlAtCaret(html) { var sel, range; if (window.getSelection) { sel = window.getSelection(); if (sel.getRangeAt && sel.rangeCount) { range = sel.getRangeAt(0); range.deleteContents(); var el = document.createElement("div"); el.innerHTML = html; var frag = document.createDocumentFragment(), node, lastNode; while ((node = el.firstChild)) { lastNode = frag.appendChild(node); } range.insertNode(frag); if (lastNode) { range = range.cloneRange(); range.setStartAfter(lastNode); range.collapse(true); sel.removeAllRanges(); sel.addRange(range); } } } else if (document.selection && document.selection.type != "Control") { document.selection.createRange().pasteHTML(html); } } </script> </body> </html>