Javascript 在定义的子字符串首次出现后查找字符串的长度
所以,我有这个html文本区域,我正在尝试实现类似twitter的东西 每次用户键入“#”时,我都要突出显示单词,并在单词末尾显示字母计数。例如,“嗨,我的名字是#user123(7),你叫什么名字?” 我已经处理好了突出显示,但我目前在字母计数部分迷失了方向。 这是我的HTMLJavascript 在定义的子字符串首次出现后查找字符串的长度,javascript,html,css,Javascript,Html,Css,所以,我有这个html文本区域,我正在尝试实现类似twitter的东西 每次用户键入“#”时,我都要突出显示单词,并在单词末尾显示字母计数。例如,“嗨,我的名字是#user123(7),你叫什么名字?” 我已经处理好了突出显示,但我目前在字母计数部分迷失了方向。 这是我的HTML <div id="inputback" class="format"></div> <textarea id="input" class="format"></textarea
<div id="inputback" class="format"></div>
<textarea id="input" class="format"></textarea>
以下是我所取得的成就。
提前谢谢你
另外,我不想使用任何插件或Jquery。只需简单的Javascript/html/css
。replace
还可以将函数作为其第二个参数:
str = str.replace(/(^|\s)#(\w+)/g,function(_,a,b) {
// _ represents the full match - we don't need it here
// a is the first subpattern
// b is the second subpattern
return a+"<b>#"+b+"</b>("+b.length+")";
});
str=str.replace(/(^ |\s)#(\w+)/g,函数(_,a,b){
//_u代表全场比赛-我们这里不需要它
//a是第一个子模式
//b是第二个子模式
返回a+“#”+b+”(“+b.length+”);
});
我调整了一下你的正则表达式。现在,即使散列在字符串的开头,它也会工作,而且我从捕获的组中取出散列,因为a)它是常量,b)您需要第二个捕获组的长度,这使它更容易。
<form id="testForm">
<input id="A1" type="text"></input>
<div id="vsA1" class="inputTextSummery">charaters reamining: 40</div>
</form>
<script type="text/javascript">
function wordCount(_input, _limit, _summary)
{
var limit = _limit; //set limit of charater
var inputDiv = "#"+_input; //inout div id
var displayDiv = "#"+_summary; //display summary div id
var currentWordCount = 0; //defualt current charater count
$(inputDiv).keyup(function(){ //
currentWordCount = $(inputDiv).val().length;
var charLeft = limit - currentWordCount;
if(charLeft >= 0){
$(displayDiv).html("charaters reamining: "+ (limit - currentWordCount));
}else{
$(displayDiv).html("Input has exceed limit!");
}
});
}
wordCount("A1", 40, "vsA1");
字符数:40
函数字数(_输入,_限制,_摘要)
{
var limit=\u limit;//设置字符的限制
var-inputDiv=“#”+_-input;//inout-div-id
var displayDiv=“#”+_summary;//显示摘要div id
var currentWordCount=0;//取消当前字符计数
$(inputDiv).keyup(函数(){//
currentWordCount=$(inputDiv).val().length;
var charLeft=限制-currentWordCount;
如果(charLeft>=0){
$(displayDiv.html(“字符再加工:”+(limit-currentWordCount));
}否则{
$(displayDiv).html(“输入已超出限制!”);
}
});
}
字数(“A1”,40,“vsA1”);
使用JavaScript.indexOf
方法查找表单值中的第一个匹配项。它所做的是在您检查的字符串中找到第一个出现的“#”,并返回它的位置
例如
在你得到排序后,你需要做的就是抓取后面的值。像这样
var string = "This is stackoverflow";
var start = string.indexOf('is') + 2; //7 (You add 2 because its a 2 letter word)
var end = string.length; //20
var newstring = string.substr(start, end);
您可以通过将var字符串替换为document.getElementById('inputidhere').value,将此信息应用到您的论坛中代码>然后从那里开始
祝你好运!希望这对您有所帮助。好的“ol长度”有什么问题?另外:您已经在使用jQuery…嗯。。。这个答案的目的是什么?
<form id="testForm">
<input id="A1" type="text"></input>
<div id="vsA1" class="inputTextSummery">charaters reamining: 40</div>
</form>
<script type="text/javascript">
function wordCount(_input, _limit, _summary)
{
var limit = _limit; //set limit of charater
var inputDiv = "#"+_input; //inout div id
var displayDiv = "#"+_summary; //display summary div id
var currentWordCount = 0; //defualt current charater count
$(inputDiv).keyup(function(){ //
currentWordCount = $(inputDiv).val().length;
var charLeft = limit - currentWordCount;
if(charLeft >= 0){
$(displayDiv).html("charaters reamining: "+ (limit - currentWordCount));
}else{
$(displayDiv).html("Input has exceed limit!");
}
});
}
wordCount("A1", 40, "vsA1");
var string = "This is stackoverflow";
var start = string.indexOf('is'); //Will return as 5
var string = "This is stackoverflow";
var start = string.indexOf('is') + 2; //7 (You add 2 because its a 2 letter word)
var end = string.length; //20
var newstring = string.substr(start, end);