28

I have a div with a string of content in it. The content is not stored in a variable and I would like to remove the last character of the text in this div. Any help please?

More info:


I have a text field, and upon entering text into the text field, the text appears in a div in large writing. When the user hits the back-space key, I want the last character in the div to be deleted. I am mainly using jQuery to achieve this. Here is my code:

$(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
        }
    }

});

I have attempted $('#mainn').text.slice(0,-1);

I have also tried storing the value of #theInput in a variable and then printing it, but that didn't work. Any ideas ?

xa.
  • 335
  • 2
  • 5
  • 13

3 Answers3

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

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

Adil Shaikh
  • 44,509
  • 17
  • 89
  • 111
  • 7
    Don't call `text()` twice, unnecessarily: `$('#mainn').text(function (i, t) {return t.slice(-1); });` – David Thomas May 14 '13 at 09:58
  • 2
    I have figured out the issue. The BACKSPACE keycode does not register when executed from within the text box for some reason. The code you suggested works perfectly, its just that my preceding code is non-functional. Thanks :D – xa. May 14 '13 at 10:13
  • 1
    `.slice(-1)` will return just the last character. The question was to _remove_ the last character... – nnnnnn May 14 '13 at 10:19
7

Are u sure u want to remove only last character. What if the user press backspace from the middle of the word.. Its better to get the value from the field and replace the divs html. On keyup

$("#div").html($("#input").val());
lintu
  • 1,092
  • 11
  • 24
  • I have considered that as an option, but never even thought about backspacing from the middle! Thanks for the suggestion :D – xa. May 14 '13 at 10:16
3
var string = "Hello";
var str = string.substring(0, string.length-1);
alert(str);

http://jsfiddle.net/d72ML/

Darren
  • 68,902
  • 24
  • 138
  • 144