2015-04-05 62 views
3

卸下最後一個字我一直在試圖刪除使用下面的代碼輸入值的最後一個字:從輸入值

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

此代碼將刪除字只有一個字母。我知道我可以通過在textVal.length - 1中指定其字母的數字來刪除整個單詞。然而,這個詞不是靜態的,所以我想用一些東西去除輸入值中的任何最後一個詞

編輯,注:單詞用點分隔,而不是空格。

有什麼建議嗎?

+0

分割,刪除最後一個元素,膠背的句子。或者,只需找到最後一個空格並剪切它之後的所有內容。 – vlaz 2015-04-05 21:25:23

回答

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*$/, ''); 
}); 
+0

我忘了提到單詞是用點分開的,而不是空格。我用你的代碼,它刪除了整個輸入值。我認爲這是因爲點。任何解決方法?謝謝@dfsq – 2015-04-05 21:34:41

+0

我喜歡這個正則表達式的答案,因爲如果這是爲了學校或面試,它將會是一個徹底的失敗,試圖解釋他們如何寫它......另一方面,如果它是真正的代碼,那麼它會可能是效率最高的 – 2015-04-05 21:36:30

+0

@JerryB對於'''分隔符使用'textVal.lastIndexOf('。')'。正則表達式版本不會改變(正則表達式的另一個優點)。 – dfsq 2015-04-05 21:38:29

1

使用lastIndexOf(' ')代替length - 1。前者將採用空格的最後一個索引(表示最後一個字,除去任何可能存在的邊緣情況),並將其用作子字符串的終點。

後者應該只給你最後一個字母的索引,因爲調用textVal.length會導致字符串中的實際字符數,而不是字。

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

1

另一種選擇是將文本轉換爲一個數組,它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>

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() 
 
{ 
 
\t $("#buttonid").on('click',function() 
 
\t { 
 
\t \t //get the input's value 
 
\t \t var textVal = $('#inputid').val(); 
 
\t \t var lastIndex = textVal.lastIndexOf("."); 
 
\t \t $('#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>