2015-01-04 3 views
-1

Были попытки адаптировать фрагмент кода, который я нашел, который удаляет 1 символ вперед в блоке текста в фрагмент кода, который удаляет весь текст вперед (т.е. через конец) текстового блока. Я могу сделать длину в большее число (скажем, 100), чтобы захватить большинство экземпляров, но это не кажется чистым.Javascript: Удалить текст после курсора

var sel = getSelectedRange(); 
var start = sel[0]; 
var length = sel[1]; 
setTextInRange(start, length == 0 ? 1 : length, ""); 
setSelectedRange(start, 0); 

Например, если текст следующим образом: «Это образец текста» и курсор находился перед словом «это», то результат будет просто слово «Это»

Я используя этот код в приложении «Черновики» на iOS для обработки текста - это очень новое для этого и первого сообщения, поэтому, надеюсь, я включил всю информацию ...

Редактировать: расположение Drafts app help page, в котором подробно описаны используемые функции.

+0

Поиск пользователя Tim Складывающаяся на этом сайте. У него отличные скрипты в формате texr. – Mouser

+0

Найденные ответы Тима и много, чтобы прорыть - спасибо за указатель. – texqs

ответ

0

Никогда не использовал и не мог полностью понять, что такое черновики, но посмотрите на определения функций, которые вам могут понадобиться, чтобы использовать другой.

test = "The lazy brown dog" \\ (imagine brown was selected) 

sel = getSelectedRange() \\ returns [10, 5] if i counted right... 

, если вы хотите удалить «коричневую собаку» вы не можете использовать длину, возвращенную getSelectedRange вам нужно будет определить длину всей строки первой.

length = getText().length 

length = length - sel[1] \\ find the length you want 

setTextInRange(sel[0], length, "") 

надеюсь, что это помогает

+0

Это работало совершенно отлично - я закончил тем, что использовал код точно так, как предполагалось, и он работает точно так, как я надеялся. Это имеет смысл, и я получаю логику - спасибо за помощь. – texqs

0

Не могли бы вы включать код для функций getSelectedRange, setTextInRange & setSelectedRange? Это даст мне лучшее представление о том, что такое sel.

Вы правы, что длина установки до 100 не такая чистая. То, что вы хотите сделать, это динамически получить длину остальной части текста &. Может быть, вы просто хотите перейти в sel.length, но я не слишком уверен, что sel - это массив.

+0

Добавлена ​​ссылка в исходном вопросе, который имеет ссылки на используемые функции. Ответ NickSlash выше работает плавно и динамически получает необходимую длину. – texqs

0

Не уверен, что я полностью понял вас, но я бросил быстрый прототип вместе.

http://jsfiddle.net/5bLxjja9/

$("#Javascript_example").click(function(){ 

    var x = $("#Javascript_example").val(); 

    var newStr = [] 
    for(var i = 0; i< curPosition();i++){ 
     newStr.push(x[i]); 
    } 
    console.log(newStr.join('')); 

    $("#Javascript_example").val(newStr.join('')); 

}); 



function curPosition() 
{ 
    var ctl = document.getElementById('Javascript_example'); 
    var curPos = ctl.selectionStart; 
    return curPos; 
} 
+0

Оцените помощь, но не смогли заставить ее работать (моя проблема/недостаток знаний) - используя скрипт внутри программы в существующем текстовом блоке и не смог перевести это, чтобы он работал. – texqs

Смежные вопросы