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

Min*_*lla 3 javascript jquery

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

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

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

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

有什么建议?

dfs*_*fsq 5

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

$('#buttonid').on('click', function () {
    var textVal = $('#inputid').val();
    $('#inputid').val(textVal.substring(0, textVal.lastIndexOf('.')));
});
Run Code Online (Sandbox Code Playgroud)
<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">
Run Code Online (Sandbox Code Playgroud)

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

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

奖励点.如果你愿意,你可以用很简单的正则表达式(尽管它可能是矫枉过正这里,但正则表达式是更可靠的,然后'.'lastIndexOf)的最后一个字边界后删除一切,例如:

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