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

Removing last word from an input value

本文关键字:最后一个 单词 删除 输入      更新时间:2023-09-26

我一直在尝试使用以下代码删除输入值的最后一个字:

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

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

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

有什么建议吗?

您可以使用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('.'));
    });
});

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

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

使用lastIndexOf(' ')而不是length - 1。前者将获取空间的最后一个索引(表示最后一个单词,除非您有任何边格),并将其用作子字符串的终点。

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

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

另一个选项是将文本转换为数组,并将其pop(),以删除最后一个元素。然后,使用空格作为分隔符重新连接它。

$('#buttonid').on('click', function () { 
    var textVal = $('#inputid').val().split(' ');
    textVal.pop();
    $('#inputid').val(textVal.join(' '));
});
<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>

您可以使用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>