Wie verwende ich jQuery, um zu verhindern, dass der Leerzeichenschlüssel ein Leerzeichen eingibt?
Ich dachte, es wäre einfach, die Leertaste in einer Formulareingabe zu hijacken, damit sie wie ein Bindestrich funktioniert. Im Allgemeinen macht jQuery solche Dinge wirklich einfach.
Der Code, den ich ausprobiert habe, lautet:
$("#StreamUrl").keydown(function (e) {
if (e.keyCode == 32) return 109;
});
Aber dies hat keinerlei Auswirkungen. Ich habe ein einfacheres Skript ausprobiert:
$("#StreamUrl").keydown(function (e) {
//if (e.keyCode == 32) return 109;
alert(e.keyCode);
});
Dieses Skript warnt 32 beim Drücken der Leertaste und 109 beim Drücken des Bindestrichs. Außerdem habe ich keine JavaScript-Fehler.
Warum würde nichtif (e.keyCode == 32) return 109;
Arbeit? Wenn ich diese Zeile durch @ ersetif (e.keyCode == 32) alert("space!!");
Ich erhalte die Warnung korrekt, daher kenne ich dasif
kehrt zurücktrue
richtig.
Was gibt
Edit - SolutionDanke an @Nick für den Hinweis auf das Problem beim Kopieren und Einfügen. Am Ende war ich ein bisschen hybride. Hier ist der Code, mit dem ich angefangen habe zu arbeiten, der sowohl flüssig als auch zum Kopieren / Einfügen geeignet ist.
$("#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, "-"); });
});