¿Cómo usar jQuery para evitar que la tecla de espacio entre en un espacio?

Pensé que sería una cosa simple secuestrar la tecla de espacio cuando está en una entrada de formulario para que funcione como un guión. En general, jQuery hace que cosas como esta sean realmente simples.

El código que probé es este:

        $("#StreamUrl").keydown(function (e) {
            if (e.keyCode == 32) return 109;
        });

Pero esto no tiene ningún efecto. Intenté un script más simple:

        $("#StreamUrl").keydown(function (e) {
            //if (e.keyCode == 32) return 109;
            alert(e.keyCode);
        });

Este script alerta correctamente a 32 en la prensa espacial y 109 en la prensa de guiones. Además, no tengo errores de JavaScript.

Porque noif (e.keyCode == 32) return 109; ¿trabajo? Cuando reemplace esa línea conif (e.keyCode == 32) alert("space!!"); Recibo la alerta correctamente, así que sé queif está volviendotrue correctamente.

¿Lo que da?

Editar - Solución

Gracias a @Nick por señalar el problema de copiar y pegar. Terminé con un poco de híbrido. Aquí está el código que llegué a trabajar, que es suave y maneja Copiar / Pegar.

        $("#StreamUrl").keydown(function (e) {
            if (e.keyCode == 32) {
                $(this).val($(this).val() + "-"); // append '-' to input
                return false; // return false to prevent space from being added
            }
        }).change(function (e) {
            $(this).val(function (i, v) { return v.replace(/ /g, "-"); }); 
        });

Respuestas a la pregunta(2)

Su respuesta a la pregunta