从输入值中删除最后一个单词

时间:2015-04-05 21:23:20

标签: javascript jquery

我一直试图使用以下代码删除输入值的最后一个单词:

$('#buttonid').on('click',function () { 
    var textVal = $('#inputid').val();
    $('#inputid').val(textVal.substring(0,textVal.length - 1));
});

此代码只删除单词中的一个字母。我知道我可以通过在textVal.length - 1中指定其字母的数量来删除整个单词。但是,这个词不是静态的,所以我想使用一些东西来删除输入值中的任何最后一个词

  

编辑,注意:字词用点分隔,而不是空格。

有什么建议吗?

4 个答案:

答案 0 :(得分:5)

您可以使用lastIndexOf方法查找分隔最后一个单词的最后一个点的位置:

$('#buttonid').on('click', function () {
    var textVal = $('#inputid').val();
    $('#inputid').val(textVal.substring(0, textVal.lastIndexOf('.')));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button id="buttonid">Remove</button>
<input type="text" id="inputid">

如果不再次重新选择相同的元素但使用val方法中的函数,也可以使代码更清晰:

$('#buttonid').on('click', function () {
    $('#inputid').val(function() {
        return this.value.substring(0, this.value.lastIndexOf('.'));
    });
});

奖励点。如果你想要你可以使用非常简单的正则表达式(尽管这里可能有点过分,但正则表达式比'.'中的lastIndexOf更可靠)以删除最后一个单词边界之后的所有内容,例如:

$('#inputid').val(function() {
    return this.value.replace(/\b.\w*$/, '');
});

答案 1 :(得分:1)

使用lastIndexOf(' ')代替length - 1。前者将采用空格的最后一个索引(表示最后一个单词,除非您可能有任何边缘情况)并将其用作子字符串的终点。

后者应该只给你最后一个字母的索引,因为调用textVal.length会导致字符串中的实际字符数,而不是单词。

$('#inputid').val(textVal.substring(0, textVal.lastIndexOf(' '));

答案 2 :(得分:1)

另一种选择是将文本转换为数组,并pop()将其转换为最后一个元素。然后,使用空格作为分隔符重新加入它。

&#13;
&#13;
$('#buttonid').on('click', function () { 
    var textVal = $('#inputid').val().split(' ');
    textVal.pop();
    $('#inputid').val(textVal.join(' '));
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="inputid"></textarea><br>
<button id="buttonid">Remove Word</button>
&#13;
&#13;
&#13;

答案 3 :(得分:1)

您可以使用lastIndexOf方法获取最近发生的peroid索引。这是代码:

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function()
{
	$("#buttonid").on('click',function () 
	{ 
		//get the input's value
		var textVal = $('#inputid').val();
		var lastIndex = textVal.lastIndexOf(".");
		$('#inputid').val(textVal.substring(0,lastIndex));
    });
});
</script>
</head>
<body>
<input type="button" id="buttonid" value="Go">
</input>
<input type="text" id="inputid" value="Anything.could.be">
</input>
</body>
</html>