2017-05-10 10 views
1

ユーザーが単一のバックスペースを押すと、完全な1つの文字列を削除したい段落があります。 たとえば、Yahooのメールのように。電子メールを作成して「To or CC or BCC」セクションに電子メールアドレスを書き込むと、ユーザーが単一のバックスペースを押すと、完全な電子メールアドレスが削除されます。 私はその機能を望んでいますが、段落にあります。段落から1つの文字列を完全に削除する

+0

私は、あなたが私が文字を書いた、単一の文字を書いていない文字列 –

+0

ない単一の文字、完全な単語を打つまで、文字列内の文字を削除したい意味だと思います。例えば、 – sumair

+0

から 'space'文字 –

答えて

2

バックスペース上の電子メールアドレスを削除するのは、space(または;はあなたのユースケースに依存します)のcharを押すまで文字を削除するだけです。
基本的にここで本当に求めているのは、
substringには、文字列の最後の部分で、space文字は区切り文字です。
EDIT
バックスペースをクリックするか、キーを削除しながら、私はキャレット(カーソル)の位置をサポートするためのスニペットを更新しました
は、ここで例として、単純なスニペットです。

$('#delete').on('click', function(){ 
 
var $input = $('#mystring'); 
 
var nextStr = deleteUpToSpace($input.val()); 
 
    $input.val(nextStr); 
 
}); 
 

 
$('#mystring').on('keyup', function(e){ 
 
    var currentCursorPoisitoin = this.selectionStart; 
 
if(e.keyCode == 8 || e.keyCode == 46){ // backspace or delete keys 
 
    \t var $input = $(this); 
 
    \t var nextStr = deleteBasedOnPosition($input.val(), currentCursorPoisitoin); 
 
$input.val(nextStr); 
 
    } 
 
}); 
 

 
function deleteUpToSpace(str){ 
 
var index = str.lastIndexOf(" "); 
 
var nextStr = str.substring(0, index); 
 
return nextStr; 
 
} 
 

 
function deleteBasedOnPosition(str, position){ 
 
var strUpToPosition = str.slice(0, position); 
 
    var lastIndexOfSpace = strUpToPosition.lastIndexOf(" "); 
 
var strToRemove = strUpToPosition.substring(lastIndexOfSpace, position); 
 
    var nextStr = str.replace(strToRemove, ""); 
 
    return nextStr; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="mystring" value="this is a test string"> 
 
<button id="delete">Delete</button>

+0

例:コンピュータ情報(データ)特定の....私は単一のバックスペースで上記の段落から単語を削除したい。ユーザーが単語 "情報"を削除したい場合は、特定の近くにマウスを置いてクリックすると、このバックスペースからバックスペースを押すと完全な単語が表示されます。 "情報"が削除されました – sumair

+0

私の答えは 'backspace'と' delete'キー –

0

まず、あなたは、これらの異なるエンティティを分離し、セパレータを特定する必要があります。たとえば、段落の最後のセンテンスを削除する必要がある場合、セパレータはピリオド(または一部の場合はフルストップ)です。 次に、文字列を区切り文字で分割し、最後の2つの要素を削除してから(最後の要素は基本的に完了していないため)、再結合します。

text.split('.').slice(0,-2).join('.') + '.' 

セパレータが期間であった場合。 https://jsfiddle.net/tt24kfng/1/

あなたは試してみることができ興味深いのは、最後に完了したエンティティを削除し、最後の未完了そのままを維持するために、次のようになりますか、一般的に、

text.split(separator).slice(0,-2).join(separator) + separator 

が、これは私がデモのために作られたフィドルをJS参照してください。

1

バックスペースをクリックしたときに単語を削除することをお勧めします。 このコードを使用できます。

<!doctype html> 
<html> 
<head> 
    <title>Test</title> 
    <meta http-equiv="Content-type" content="text/html;charset=UTF-8"> 
</head> 
<body> 

<textarea id="foo"></textarea> 


<script type="text/javascript"> 

    document.getElementById('foo').addEventListener("keydown",function(event){ 

     if(event.code=="Backspace"){ 
      var text=document.getElementById('foo').value; 
      var lastspace = text.lastIndexOf(" "); 
      var updateStr=text.substring(0,lastspace); 
      document.getElementById('foo').value=updateStr; 

     } 
     }); 

</script> 

</body> 
</html> 
関連する問題