2013-05-14 12 views
26

Mam element div zawierający ciąg treści. Treść nie jest przechowywana w zmiennej i chciałbym usunąć ostatni znak tekstu w tym div. Proszę o pomoc?JavaScript: Jak usunąć ostatnią literę z div lub string?

Więcej informacji:


Mam pole tekstowe, a po wprowadzeniu tekstu w polu tekstowym, tekst pojawia się w div w dużych piśmie. Kiedy użytkownik trafi w klawisz spacji, chcę, aby ostatni znak w div został usunięty. Korzystam głównie z jQuery, aby to osiągnąć. Tu jest mój kodu:

$(document).ready(function(){ 
    $("#theInput").focus(); //theInput is the text field 

    $('#theInput').on('keypress', printKeyPress); 

    function printKeyPress(event) 
    { 
     //#mainn is the div to hold the text 
     $('#mainn').append(String.fromCharCode(event.keyCode)); 
     if(event.keyCode ==8) //if backspace key, do below 
     { 
      $('#mainn').empty(); //my issue is located here...I think 
     } 
    } 

}); 

próbowałem $('#mainn').text.slice(0,-1);

Próbowałem również przechowywanie wartości #theInput w zmiennej, a następnie drukowanie, ale to nie działa. Jakieś pomysły ?

+0

Dlaczego po prostu nie wstawisz wartości wejściowej do elementu div? – jarvanJiang

+0

Próbuję się wszystkiego nauczyć. :) –

+0

Świetne pytanie - znalazłem wiele odpowiedzi na pytanie, jak przycinać znaki z łańcucha. Dobrze sformułowałeś swoje pytanie, aby pomóc mi je znaleźć, szukając. Dzięki! – Jason

Odpowiedz

57
$('#mainn').text(function (_,txt) { 
    return txt.slice(0, -1); 
}); 

demo -->http://jsfiddle.net/d72ML/8/

+7

Nie wywołuj dwukrotnie 'text()' niepotrzebnie: '$ ('# mainn'). Text (funkcja (i, t) {return t.slice (-1);});' –

+0

Żadna z sugestii nie działa dla mnie. –

+2

Rozgryzłem problem. Kod klucza BACKSPACE nie rejestruje się po wykonaniu z pola tekstowego z jakiegoś powodu. Kod, który zasugerowałeś, działa idealnie, jego poprzedni kod jest niefunkcjonalny. Dzięki: D –

6

Czy u, że u chcą, aby usunąć tylko ostatni znak. Co zrobić, jeśli użytkownik nacisnął klawisz Backspace od środka wyrazu? Lepiej jest uzyskać wartość z pola i zastąpić plik divs html. Na keyup

$("#div").html($("#input").val()); 
+0

Rozważałem to jako opcję, ale nigdy nawet nie myślałem o backspacingu od środka! Dzięki za sugestię: D –

Powiązane problemy