• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Input-Feld formatieren und schützen

Mannix

New member
Hallo,

gibt es eine Möglichkeit, ein Formularfeld als reines Ausgabefeld zu nutzen: Das es nicht vom Benutzer geändert werden kann?
Code:
<td align="left">
	<input type="text" NAME="p616" size="8"> €<br>
	<input type="text" NAME="p615" size="5"> m<sup>2</sup><br>
</td>
In diesem Feld wird das Ergebnis einer mathematischen Berechnung ausgegeben: Wie kann ich diese Ausgabe formatieren? (nur 2 Stellen hinter dem KOMMA, einem TausenderPunkt und Fettschrift?
Und wie kann ich in Eingabefeldern rechnen, wenn statt einem Punkt ein Komma eingegeben wurde? (Muß aber etwas generelles sein, denn im Formular sind bis zu 600(!) Eingabefelder)
 
Hallo,

wie schon beim letzten mal: Das geht mit readonly...

Beispiel:

<input name="bla" type="TEXT" size="4" maxlength="3" value="1000" readonly>

-> ein Ausgabefeld

Zu deiner anderen Frage: Es gibt bestimmt sowas wie Round(), weiß es aber leider nicht genau, ansonsten würd ich einfach mal googlen oder hier intern suchen... Bei google bringt dich der erste Eintrag unter "javascript runden" schon zum erfolg...

Mit den Punkt und Kommawerten könntest du die die eingegeben Kommas einfach in Punkte umwandeln, vllt gibt's aber auch was einfacheres...

Gruß
 
Das Fette hab ich inzwischen auch gefunden.
Fehlt der TausenderPunkt, und die Eingabekorrektur bei Komma statt Punkt
 
Komma durch Punkt ersetzen:

Code:
<script language="JavaScript">

function suchen(feld)
{
var test=feld.value.search(/,/);
if (test == -1)
    {alert('Alles OK')}
else
{
    feld.value=feld.value.substr(0,test) + "." + feld.value.substr(test+1,feld.value.length-test)  
    alert('Komma nicht erlaubt, wird umgewandelt in Punkt');
}


}

</script>

                     <input type="text" NAME="p616" size="8" onkeyup="suchen(this)"> €<br>
	<input type="text" NAME="p615" size="5" onkeyup="suchen(this)"> m<sup>2</sup><br>

Kannst aber auch gerne auf eines der anderen Mitglieder warten, die kennen bestimmt nen einfacheren Weg...
 
also das runden mit zwei stellen nach dem Komma:
PHP:
$zahl= round($eingabe, 2);

nachzulesen hier: round()

für Komma durch Punkt ersetzen:
PHP:
for ($i=1; $i < 600; $i++) {
$zahl[$i]= ereg_replace(",", ".", $_POST[$i]);
}


Weiß ja nicht wie du deine Eingabefelder definiert hast, in diesem Beispiel sind sie einfach durchnummeriert.
Ist nicht getestet, hoffe aber es funktioniert :D


edit: gehört das nicht eigentlich ins Serverseitige? ;)
 
Moin!
wumble schrieb:
gehört das nicht eigentlich ins Serverseitige? ;)
Das weiß bislang noch niemand. Ich gehe aber eher davon aus, daß es um JS geht (was genauso falsch sein kann).

Ahoi - Pit
 
Das ist Ansichtssache:
Der Input erfolgt über HTML,
die Berechnung sind inzwischen 3 JS-Dateien mit insgesamt ca. 1000 Zeilen Code,
die Weitergabe erfolgt über PHP
und irgendwo dazwischen müssen die Prüfungen noch rein.
Wens interessiert: Die Nutzung erfolgt momentan hier:
Und hier über Granit einen Stein auswählen.
Die Anzahl der Granite kann sich jederzeit ändern, aberdie werden aus der DB geholt.
Ebenso sind in der DB für verschiedene Größen und Bearbeitungen die Preise hinterlegt (eine Eingabe- und Änderungsseite muß ich auch noch machen).
Im Programm wird dann geprüft, was ausgegeben wird: Nur das, wofür auch Preise vorhanden sind.
Mein Test-Stein, der Azul Platino, ist mal in allen Berabeitungsformen vertreten, dadurch ist hier die Liste besonders lang.
Wenn der Besucher momentan z.B. 1,2 eingibt, wird nur der Wert vor dem Komma berechnet, der Rest wird ignoriert.
Diese Berechnung findet schon durch onkeyup statt, darum muß die Kontrolle hierzu wohl in die bestehende function eingebaut werden, als JS.
Oder kann ich das über einen Parameter der InputForm checken, also HTML?
Oder wird es erst bei der Übertragung in den Warenkorb geändert, also in PHP?
(Und ich arme Sau häng dazwischen :( )
 
Hallo nochmal,

wie gesagt, in JavaScript "könntest" du es so machen, wie ich geschrieben hatte... Und du kannst meines Wissens nach bei "onkeyup" auch mehrere Funktionen ausführen...

Wär nicht schlecht mal zu wissen, wie du es regeln willst...
 
Wenn mein Problem gelöst ist, werde ich das Ergebnis auf jeden Fall hier bekannt geben

Aber zwei Aufrufe in einer onkeyup-Funktion bekomm ich nicht hin!?
 
Zuletzt bearbeitet:
Hey...

Bei mir funzt das...

Bsp:

Code:
<input type="text" NAME="p616" size="8" onkeyup="runden(); suchen(this);"> €<br>
 
Beim 4. Versuch hats geklappt.
Mit
Code:
<INPUT TYPE="text" NAME="f618" onkeyup="suchen(this); rechne3(this);" value="0" size="5">
gehts, aber wenn ich rechne3(this) zuerst aufrufe, klappts nicht, und auch ohne this gehts nicht.
Mit dem Runden habe ich noch immer Probleme, und auch ein Check, daß keine Buchstaben eingegeben werden können, fehlt mir noch.
(Das werde ich wohl in "suchen" einbauen müssen...)
Code:
function suchen(feld) 
	{ 	var t1=feld.value.search(/,/);
		if (t1 != -1)
			{ feld.value=feld.value.substr(0,t1) + "." + feld.value.substr(t1+1,feld.value.length-t1)  }
	}
Jetzt habe ich mal dei function erweitert
Code:
function suchen(feld) 
	{ 	var t1=feld.value.search(/,/);
		if (t1 != -1)
			{ feld.value=feld.value.substr(0,t1) + "." + feld.value.substr(t1+1,feld.value.length-t1)  }
		if (t1 == 'a' || t1 == 'b' || t1 == 'c' || t1 == 'd' || t1 == 'e' || t1 == 'f' || t1 == 'g' || t1 == 'h' || t1 == 'i' || t1 == 'j' || t1 == 'k' )
			{ feld.value=feld.value.substr(0,t1) + feld.value.substr(t1+1,feld.value.length-t1)  }
		if (t1 == 'l' || t1 == 'm' || t1 == 'n' || t1 == 'o' || t1 == 'p' || t1 == 'q' || t1 == 'r' || t1 == 's' || t1 == 't' || t1 == 't' || t1 == 'u' )
			{ feld.value=feld.value.substr(0,t1) + feld.value.substr(t1+1,feld.value.length-t1)  }
		if (t1 == 'w' || t1 == 'x' || t1 == 'y' || t1 == 'z' || t1 == '!' || t1 == '§' || t1 == '$' || t1 == '%' || t1 == '/' || t1 == '(' || t1 == ')' )
			{ feld.value=feld.value.substr(0,t1) + feld.value.substr(t1+1,feld.value.length-t1)  }
		if (t1 == '=' || t1 == '?' || t1 == 'ß' || t1 == 'ä' || t1 == 'ü' || t1 == 'ö' || t1 == ';' || t1 == ':' || t1 == '_' || t1 == '-' || t1 == '<' )
			{ feld.value=feld.value.substr(0,t1) + feld.value.substr(t1+1,feld.value.length-t1)  }
	}
aber die Buchstabenkontrolle (mom. erstmal Kleinbuchstaben) klappt nicht: Warum??
 
Zuletzt bearbeitet:
Hey, wenn du es wirklich so machen willst, solltest du vllt eher prüfen, ob eine Zahl eingegeben wurde... das macht 10 Möglichkeiten, so werden es weit über 50...

Und klappen tut das Ganze nicht, weil du mit ".search" die Stelle zurückgegeben kriegst, an der das gesuchte Zeichen ist.

In deinem Fall suchst du nur nach nem Komma, also kriegst du entweder die Stelle des Kommas zurück oder, falls kein Komma vorhanden, ein -1...

Um auf Buchstaben zu prüfen gibt's aber bestimmt was besseres... Wenn ich was finde, geb ich bescheid...

Zu dem Problem mit mehreren Funktionen bei onkeyup:

"Rechne" zuerst auszuführen wäre schwachsinn, weil du ja gerade durch "Suchen" die Kommas durch Punkte ersetzen willst, damit richtig gerechnet werden kann...

Warum da das this benötigt wird, kann ich so auch nicht sagen, müsste man mal sehen, wie du die Felder ansonsten ansprechen willst... Wenn du diese eine Funktion jedoch für jedes Feld nehmen willst, ist es mit dem this wesentlich einfacher, wie willst du es sonst dynamisch halten?

Was hast du beim Runden für'n Prob?
 
Zuletzt bearbeitet:
Zurück
Oben