Bir javascript ile input
veya textarea
'un içeriğini düzenlemek için bir yol var mı ve bu değişiklik tarayıcının "geri al" komutuyla (örn. ctrl-Z
) geri alınamaz mı?Bir metin girişini javascript ile düzenlemek ve Geri Al yığısına eklemek mümkün mü?
"Foo {0} bar" gibi bir dize, seçimdeki değere eklemeye çalışıyorum ve kullanıcı bir aralık seçtiyse, seçili aralık, dizenin yerine dizeye eklenir. "{0}".
Örneğin, textarea "Örnek 1 2 3" içeriyorsa ve imleç "Örnek 1 | 2 3" ise, işlev değeri "Örnek 1Foo blah bar 2 3" olarak değiştirir (valueIfNothingSelected
"blah" " bu durumda). Eğer "1 2" aralığı seçildiyse, fonksiyon bunun yerine değeri "Örnek Foo 1 2 bar 3" e değiştirecektir.
Chrome'da bu işlevi test ettim ve yapması gerekenleri yapıyor, ancak değişikliği undo
ile değiştiremiyorum. "Field.focus
document.execCommand("insertText", false, processedText);
... ve hareketli:
function insertTextAtCursor(text, valueIfNothingSelected) {
var field = $('textarea[name="task_log_description"]')[0];
var startPos = field.selectionStart;
var endPos = field.selectionEnd;
var processedText;
if (startPos == endPos) {
processedText = text.replace('{0}', valueIfNothingSelected);
field.value = field.value.substring(0, startPos) + processedText + field.value.substring(endPos, field.value.length);
field.selectionStart = startPos + text.indexOf('{0}');
field.selectionEnd = field.selectionStart + valueIfNothingSelected.length;
} else {
var selectedText = field.value.substring(startPos, endPos);
processedText = text.replace('{0}', selectedText);
field.value = field.value.substring(0, startPos) + processedText + field.value.substring(endPos, field.value.length);
field.selectionStart = startPos + text.indexOf('{0}');
field.selectionEnd = field.selectionStart + selectedText.length;
}
field.focus();
}
ctrl-z zaten Ubuntu 14.04'te Chrome + Firefox'ta benim için çalışıyor. Sizin için çalışmadığı durum nedir? – Jack
@Jack Javascript yöntemimi eklemek için genişletilmiş soru. Hangi nedenle olursa olsun, bu yöntem kullanıldığında 'Ctrl-z' çalışmaz. –
[Javascript textarea geri almayı reddet] 'ın olası kopyası (http://stackoverflow.com/questions/7553430/javascript-textarea-undo-redo) – Fraser