我的页面有一个<div>
与从数据库馈送的书籍脚本相呼应的内容。
用户应该找到一些文本,用光标突出显示它,然后右键单击以显示我从 Andrew Whitaker,Stack/4495626 获得的自定义上下文菜单。
然后,用户应单击上下文菜单中的选项之一
<Idiom>Idiom</Idiom>
,<Proverb>Proverb</Proverb>
等,将光标突出显示的文本插入文本字段id="element"
。
User704808:我尝试了 jsfiddle,但它不会让上下文菜单在该窗格中工作,所以我用下面的一整页代码进行了更新。前三个测试正确,因为它们是静态的;这是我无法工作的动态 getSelected() 。再次感谢。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
</script>
<script type="text/javascript">
$(document).bind("contextmenu", function(event) {
event.preventDefault();
$("div.custom-menu").show();
$(".custom-menu").appendTo("body").css({
top: event.pageY + "px",
left: event.pageX + "px",
visibility: "visible"
});
}).bind("click", function(event) {
if (!$(event.target).is(".custom-menu")) {
$("div.custom-menu").hide();
}
});
</script>
<script type="text/javascript">
var getSelected = function(){
var t = '';
if(window.getSelection) {
t = window.getSelection();
} else if(document.getSelection) {
t = document.getSelection();
} else if(document.selection) {
t = document.selection.createRange().text;
}
return t;
} </script>
<style>
body {font-family:Verdana, Arial, Helvetica, sans-serif; margin-top:14%;}
.custom-menu { z-index:1000; height:85px; position: absolute; background-color:#F0F0F0; border-right: 1px solid black;border-bottom: 1px solid black;border-top: 1px solid white;border-top: 1px solid white; padding: 2px; left: 1103px; top: 12px;visibility:hidden; }
</style>
</head>
<body>
<div class='custom-menu'>
<table width="426" cellpadding="6">
<tr>
<td nowrap="nowrap"><Idioms>Idioms</Idioms></td>
<td nowrap="nowrap"><IdiomsSentence>Idioms Sentence</IdiomsSentence></td>
</tr>
<tr>
<td nowrap="nowrap"><Proverb>Proverbs</Proverb></td>
<td nowrap="nowrap"><ProverbSentence>Proverbs Sentence</ProverbSentence></td>
</tr>
</table></div>
<form name="form13" method="post">
<input type="text" class="cleanup" name="element" id="element" value="" size="70" />
element:<br />
<input class="cleanup" name="elementSentence" type="text" id="elementSentence" value="" size="70" /></td></tr>
elementSentence :</form>
<script type="text/javascript">
$(document).ready(function() {
$("Idioms").click(function(){
$("#element").val("Idioms Test");});
$("IdiomsSentence").click(function(){
$("#elementSentence").val("IdiomsSentence Test");});
$("Proverb").click(function(){
$("#element").val("Proverb Test");});
$("ProverbSentence").click(function(){
$("#elementSentence").val(getSelected());});}); </script>
<div id="dialogue">
<ul>
<li>I have left in place three 'static' test examples that work. Please right-click, select either 'Idioms', 'Proverbs', or 'IdiomsSentence', and you'll see they insert, singly, into the form correctly.<br />
<br />
</li>
<li>The one that isn't working is the one that has the getSelected() wherein someone should drag their cursor over some text like 'There is more than one way to skin a politician.', then right click, select 'Proverbs Sentence', and it should auto-enter the second field.</li>
</ul>
<p>Proverb: There is more than one way to skin a politician.</p>
<p>Idiom: Actions speak louder than words, but I'm pretty loud anyway.</p>
</div>
</body>
</html>