Edit in JSFiddle

/*
 * jQuery Multi Line Text Input
 * Version 0.0.1
 * http://github.com/staydecent/jquery-multilinetext
 *
 * Replaces a textarea with multiple text inputs, automatically 
 * appending a new input when the last is filled with content.
 *
 * Copyright (c) 2011 Adrian Unger (http://staydecent.ca)
 * Released under the MIT license.
*/

(function($) {

    $.fn.multilineText = function(options, callback) {

        var settings = {
            // Not sure what (if any) settings will be helpful
            'error-element': '#error_message'
        };

        var create_multilines = function(element) {
            /*
            Removes a textarea element, replacing it 
            with text inputs for each line.
            */
            var $this = $(element);

            var parent = $this.parent();
            var name = $this.attr('name');
            var text = $this.val();

            // Remove double newlines and create an array
            var lines = text.replace("\n\n", "\n").split("\n");
            // remove the textarea and inputs
            $this.remove();
            $('.' + name + '-mlText').remove();

            // create a textfield for each line 
            for (var line in lines) {
                var value = $.trim(lines[line]);
                
                if (value !== "") {
                    parent.append('<input type="text" class="' + name + '-mlText" name="' + name + '" value="' + value + '">');
                }
            }

            // add blank input
            parent.append('<input type="text" class="' + name + '-mlText" name="' + name + '" value="">');

            $('.' + name + '-mlText').live('focus', function() {
                // wait for keypress and check this is the last input
                // and is empty and previous input has content
                $(this).keypress(function() {
                    if ($(this).is(':last-child') && $(this).val() === "" && $(this).prev('.mlText').val() !== "") {
                        // then clone the blank input
                        $(this).after($(this).clone());
                    }
                });
            });
        };

        return this.each(function() {
            if (options) {
                $.extend(settings, options);
            }

            var handler_set = false;

            // only operate on an element if it's a textarea
            if (this.tagName == "TEXTAREA") {
                create_multilines(this);

                // Grab the parent form of this textarea
                // and attach a submit handler.
                var form_element = $('label[for=' + $(this).attr('name') + ']').closest('form');
                var name = $(this).attr('name');

                form_element.bind('submit.multilineText', function() {
                    var $this = $(this);
                    var blob = "";

                    // Iterate each input and combine values into
                    // a single string, then disable the input.
                    $('.' + name + '-mlText').each(function() {
                        var text = $(this).val();
                        if (text !== "") {
                            blob = blob + "\n" + text;
                            $(this).attr('disabled', true);
                        }
                    });

                    // Now recreate a textarea with the blob string
                    // as it's value. Ready for processing.
                    var label = $.find('label[for=' + name + ']');
                    var parent = $(label).parent();
                    if (blob.length > 0) {
                        parent.append('<textarea name="' + name + '" cols="40" rows="10" class="multiline" id="' + name + '">' + blob + '</textarea>');
                        $('textarea[name=' + name + ']').hide();
                    }
                });
            }

            if (typeof callback == 'function') {
                callback.call(this); // brings the scope to the callback
            }
        });

    };

})(jQuery);

jQuery(document).ready(function($) {
    $('textarea.ml').multilineText();

    $('form').submit(function() {
        var result = $("textarea.multiline").val();
        $('#result').text(result);
        return false;
    });
});
<form>
    <label for="foods">What are some of your favourite foods?</label>
    <div>
        <textarea name="foods" class="ml" cols="40" rows="10"></textarea>
    </div>
    
    <input type="submit"></submit>
</form>
<p>Result (for server-side processing):</p>
<pre id="result"></pre>
form,
p {
    padding:1em;
}
input {
    display:block;
    margin-bottom:1em;
}
pre {
    margin:1em;
    padding:1em;
    border:1px solid #000;
}