Как использовать jQuery для предотвращения ввода пробела клавишей пробела?

Я подумал, что было бы просто перехватить клавишу пробела при вводе формы, чтобы она работала как дефис. Обычно jQuery делает такие вещи очень простыми.

Код, который я пробовал это:

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

Но это никак не влияет. Я попробовал более простой скрипт:

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

Этот скрипт правильно предупреждает 32 при пробелах и 109 при дефисе. Кроме того, у меня нет ошибок JavaScript.

Почему бы неif (e.keyCode == 32) return 109; Работа? Когда я заменяю эту строкуif (e.keyCode == 32) alert("space!!"); Я получаю предупреждение правильно, поэтому я знаюif возвращаетсяtrue правильно.

Что дает?

Редактировать - Решение

Спасибо @Nick за указание на проблему копирования и вставки. Я закончил с небольшим количеством гибрида. Вот код, который я получил для работы, который является гладким и обрабатывает Копировать / Вставить.

        $("#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, "-"); }); 
        });

Ответы на вопрос(2)

Ваш ответ на вопрос