作为我们的例子
姓名:Abdul Naeem
如果我们从上面选择Naeem以便从中获取Abdul .......
是否可以获取所选单词的左侧单词
我试过但我还没有找到这个.....可以任何身体帮助我摆脱这个问题。
我发现了一些提示,它只能获取所选单词,但我需要左侧的单词
例如,让我们考虑一个物体是否重30 N.现在我想选择30,并从中得到重量?我怎么能在javascript中完成 -答案 0 :(得分:0)
这是非常重要的,主要是因为文档的层次性。
在非IE浏览器中,只要它位于同一元素中,就会为您提供前一个单词的限制功能:
// get the selection
var sel = window.getSelection();
// get the element in which the selection is made, and the start and end position
var node = sel.anchorNode;
var from = sel.anchorOffset;
// let's see what's before the selection
var textBeforeWord = node.textContent.substring(0, from);
var match = textBeforeWord.match(/(\w+)\s+/);
var previousWord = match[1];
当你考虑一个单词可能是其元素中的第一个东西,或者选择可能跨元素时,当你需要导航DOM层次结构以寻找前一个元素时,这会变得复杂得多。事实上,你需要做两次完全不同的事情(因为IE的API完全不同),这也很复杂。
编辑如果是<textarea>
元素,它会变得更简单,因为您无需担心选择溢出元素。对于IE,你必须做一些体操,因为它不支持selectionStart
,如here所述。
var node = document.getElementById('mytextarea');
var from = node.selectionStart;
var textBeforeWord = node.textContent.substring(0, from);
// the rest is the same as above
答案 1 :(得分:0)
首先假设这些:
textbox中的所有文字= Abdul Naeem
目前选择的文字= ul Naeem
目前未选中的文字= Ab
现在,从你的问题来看,你只想得到正确的未选文本,在这种情况下是Ab?然后像这样制作三个变量:
var allText = ... // get it from your textbox value
var selectedText = ... // try to get it using your link location
var unselectedText = allText.replace(selectedText, '');
然后你得到unselectedText。谢谢&amp;问候。
答案 2 :(得分:0)
注意刚刚在** CHROME 中测试过,它会显示左边所有单词“SELECTED”Word
您需要根据需要稍微修改一下,只需尝试
//console.log(window.getSelection().focusNode.data);
var textSelected = window.getSelection().toString();
var fulltext = window.getSelection().focusNode.data;
console.log(fulltext.substr(0,fulltext.length-textSelected.length));
答案 3 :(得分:0)
我发现这个问题非常有趣,因此我尝试在Javascript的帮助下完成。我不会称它为一个好的代码,但它做了你需要的阿卜杜勒。为您提供整个代码以及html页面。您将收到大量警报消息,以帮助您调试和理解我的代码。我修改了现有代码,请忽略与您无关的内容。 执行测试只需要名称字段。如果您需要澄清,请告诉我。
在测试时,请选择文字,这样就不会选择空格以及单词,这通常在双击选择时发生。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script>
function getPreviousWord()
{
alert("inside getPreviousWord");
var sel = window.getSelection().toString();
alert("selected word is: "+ sel);
var x=document.getElementById("1111");
alert("x= " +x);
var currentTag=x.tagName;
alert("Current tagname is: "+currentTag);
currentTag=currentTag.toLowerCase();
alert("Current tagname (lowered) is: "+currentTag);
var completeList=document.getElementsByTagName(currentTag);
var converted=completeList.toString();
alert("complete List is: "+completeList);
alert ("coneverted = "+converted);
var cur=0;
var next=0;
var i=0;
var word1="";
var word2="";
var j=0;
var found= false;
for(i=0;i<completeList.length;i++)
{
var temp=completeList[i].value.toString()+" ";
alert("temp= "+temp);
for(j=0;j<temp.length;j++)
{
if(temp.substring(j,j+1)==" ")
{
alert("Blank space found");
next=j;
alert("next= "+j);
word1=word2;
word2=temp.substring(cur,next);
alert("word1= "+word1 +" and word2= "+ word2);
cur=j+1;
if(word2==sel)
{
alert("previous word is: "+ word1);
found= true;
break;
}
else
{
alert("sel!=temp");
}
}
}
if(found==true)
{
alert("Breaking outer loop");
break;
}
}
}
</script>
<title>Hello World</title>
</head>
<body bgcolor="beige">
<h1>Employee Details</h1>
<form action="hello" name="frm" onSubmit="return validate()">
<label>Please enter your name</label><br/>
<input type="text" name="name" id="1111" onselect="getPreviousWord()"/><font size="4" color="red"> <div id="error"> </div></font>
<br/>
<label id="abc">Employee ID:</label><br/>
<input type="text" name="empId"/><br/>
<label>Email Id:</label><br/>
<input type="text" name="email">
<br/>
<label>Phone Number:</label><br/>
<input type="text" name="phone">
<br/>
<br/>
<br/>
<input type= "button" value="Check" onclick="return validate()">
<input type="submit" value="Submit"/>
<s:fielderror>
<s:param> name</s:param>
</s:fielderror>
</form>
</body>
</html>
答案 4 :(得分:-1)
<!DOCTYPE html>
<html>
<body>
<p>Click the button to display the array values after the split.</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
function myFunction() {
var str = "Abdul Naeem";
var res = str.split(" ");
for(i=0;i<res.length;i++)
{
alert(res[i]);
}
//document.getElementById("demo").innerHTML = res;
}
</script>
</body>
</html>
答案 5 :(得分:-1)
使用Jquery在JS中试试这个:
var a="Name : Abdul Naeem";
var sp="Naeem";
$(function(){
var x=a.split(sp);
z=x[0].split(" ");
alert(z[z.length-2]);
});