JavaScript: Dynamisches Feld-Namen
HALLO Alle,
Habe ich ein Stück von javaScript, die entfernt Kommas, die aus einer angegebenen Zeichenfolge (in meinem Fall Währung Werte)
Ist es:
function replaceCommaInCurrency(myField, val)
{
var re = /,/g;
document.net1003Form.myField.value=val.replace(re, '');
}
'MyField', war mein Versuch, auf dynamisch haben, das arbeiten auf jedem Feld, das ich mich übergeben, aber es funktioniert nicht, ich bekomme Fehler, die sagen, 'MyField' ist nicht gültig. Ich verstehe meinen, aber ich dachte, dieses gültig war.
Rufe ich mit: "onBlur="replaceCommaInCurrency(dies.name, diesem.Wert);return false;"
diese.Namen und diese.Wert übergeben werden, in die richtigen Werte...Feldname und Wert.
Wie mache ich das dynamisch?
-Jason
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Verwendung von eval, um Ihren code-snippet Arbeit:
Wie unten erwähnt, der eckigen Klammern arbeiten (und nicht saugen wie eval), dumm mich vergessen über die:
Alternativ versuchen, so etwas wie dieses:
Die aufgerufen wird, etwa so:
Sollten Sie erwägen, ein javascript-toolkit für Dinge wie diese. Konnten Sie eine Klasse wie "Währung", die auf jeder Eingabe, dann verwenden Sie dieses snippet jQuery basierte Javascript alles im Griff:
Dieser code würde das Feuer auf Dokument bereit, fügen Sie einen Ereignis-handler, um jeden Eingang mit Währung als seiner Klasse, und führen Sie dann den Ersatz. Beachten Sie, dass Sie brauchen nicht eine regex für den Ersatz sowie.
Wenn Sie den code direkt in das markup wie z.B. " onblur="replaceCommaInCurrency(dies)", die Steuern Ursprung der Veranstaltung übergeben bekommt als parameter. Dann sollten Sie in der Lage sein, etwas zu tun:
mit jQuery:
Im Allgemeinen, sollten Sie mit Hilfe eines Rahmens, der für das low-level-Funktionalität, wie diese, aber die spezifische Antwort auf Ihre Frage ist die Verwendung von Klammer-notation für das Feld name:
-- und dann rufen Sie es wie folgt:
flatline und roenving Lösung mit "dieser" ist der sauberere Ansatz, es vermeidet auch die Probleme der " Dokument.formname.fieldname'.
(Mit ‘document.Formen.formname", um den Zugriff auf eine form ohne mögliche Kollision auf Formen, die den gleichen Namen wie die Mitglieder des document-Objekts, und " Formen.Elemente.fieldname', das gleiche zu tun mit Feldern. Wie alle JavaScript-Objekt, Objekt[namevariable] können auch verwendet werden. Oder, besser, hinzufügen von IDs und verwenden Sie die eindeutige Dokument.getElementById-Methode.)
Durch verschieben der Bindung in den Skript-Sie können auch entfernen Sie den inline-JavaScript das onclick-Attribut, so dass die markup-cleaner noch: