我一直在尝试使用以下代码删除输入值的最后一个单词:
$('#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.但是,这个词不是静态的,所以我想使用一些东西来删除输入值中的任何最后一个单词.
编辑,注意:单词由点分隔,而不是空格.
有什么建议?
您可以使用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)
| 归档时间: |
|
| 查看次数: |
1029 次 |
| 最近记录: |