Prozenteingabe riesen Problem !

Mudknot

Mitglied
Hallo Leute

Bin leider nur sehr schlecht mit Javascript vertraut deshab komm ich auch bei meinem kleinen Projekt nicht weiter

Als ich hab da 4 Eingabefelder in die Zahlen geschrieben werden können

Wenn das erste Feld leer ist sollen auch die restlichen leer bleiben, falls gefüllt --> Fehlermeldung!

Wenn das erste jedoch gefüllt ist dann muss mann in die restlichen 3 sozusagen eine Prozentaufteilung machen, d.h. die 3 Felder dürfen keinen größeren Wert als 100 haben und natürlich auch keinen kleineren Die 3 zusammen müssen als exakt 100 ergeben


Ich weiß nur leider überhaupt nicht wie ich das reaslisieren kann. Vielleicht hat ja jemand von euch schonmal so ne Eingabe gebraucht und kann mir den Quellcode posten.

Wäre wirklich sehr dankbar

Greetingz, Mudy
 
Ein fertiges Script darfst du hier nicht erwarten, aber Anhaltspunkte:

Wenn deine Eingabefelder z.B. so aussehen:
Code:
<form name="Eingabe">
  <input type="text" name="Val1" size="4" />
  <input type="text" name="Val2" size="4" />
  <input type="text" name="Val3" size="4" />
  <input type="text" name="Val4" size="4" />
</form>
Dann kannst du per JavaScript mit folgenden Variablen auf deren Inhalt zugraifen:
Code:
/* von */
sVal1 = window.document.forms['Eingabe'].elements['Val1'].value;
/* bis: */
sVal4 = window.document.forms['Eingabe'].elements['Val1'].value;
Die Variablen sVal2 bis sVal4 muessen nun noch in eine Zahl, mit der man rechnen Kann, umgewandelt werden.
Das geht mittels der Funktion intVal:
Code:
iVal2 = intVal(sVal2);
iVal3 = intVal(sVal3);
iVal4 = intVal(sVal4);
Jetzt kannst du ganz einfach pruefen, ob diese Zahlen zusammen 100 ergeben:
Code:
if (iVal2 + iVal3 + iVal4 == 100) {
    window.alert('Alles ok');
} else {
    window.alert('Bitte gueltige Werte eingeben');
}
 
Hallo

Ich hab jetzt diesen Code bei mir eingebaut, nur stimmt irgendwas leider noch nicht. Vielleicht weißt du was ich falsch gemacht habe?



<script type="text/javascript">
<!--
function Check() {
sJungvieh1Ti = window.document.testform.Jungvieh1Ti.value;
sJungvieh1Mi = window.document.testform.Jungvieh1Mi.value;
sJungvieh1Gu = window.document.testform.Jungvieh1Gu.value;

iJungvieh1Ti = intVal(sJungvieh1Ti);
iJungvieh1Mi = intVal(sJungvieh1Mi);
iJungvieh1Gu = intVal(sJungvieh1Gu);

if (iJungvieh1Ti + iJungvieh1Mi + iJungvieh1Gu == 100) {
window.alert('Alles ok');
} else {
window.alert('Bitte gueltige Werte eingeben');
}
}


//-->
</script>

........

<input type="submit" id="Button" Name="Button" onclick="return check();">



Lg , Mudy
 
Hi,

- stehe ich jetzt total auf dem Schlauch, oder sollte man bei JS statt "intVal" "parseInt" verwenden?

- ich würde der Funktion Check() zumindest das Formular als Referenz übergeben:
PHP:
onclick="return check(this.form);"
// bei return sollte die Funktion übrigens einen boolschen Wert zurückgeben!
- dann hast Du die Elemente mit
PHP:
function Check(the_form) {
sJungvieh1Ti = the_form.Jungvieh1Ti.value;
sJungvieh1Mi = the_form.Jungvieh1Mi.value;
sJungvieh1Gu = the_form.Jungvieh1Gu.value;
...
schon mal greifbarer. Notfalls würde ich die Werte erst einmal mit "alert" tracen, ob die Elemente überhaupt korrekt angesprochen werden.
[BTW]
Ich wollte gestern eigentlich schon eine Funktion posten, dachte aber, Du meintest, dass die Werte bei einer falschen Summe automatisch auf 100% angepasst werden sollten... bei viel zu hohen Eingaben wäre da u.U. eine iterative Reduzierung (bzw. einige Bedingungsprüfungen) nötig...[/BTW]

Gruß
 
Mit alert habe ich es schon getestet und die Funktion wird aufgerufen.

Habe es jetzt mit parseint versucht und das Formular als Referenz übergeben nur funktionieren tut das ganze leider immer noch nicht Bekomm immer so nen blöden Skriptfehler: Jungvieh1Ti ist Null oder kein Objekt!

Bin schon am Verzweifeln


Lg, Mudy
 
Hier der Code:


<%@ Page Language="vb" AutoEventWireup="false" Codebehind="1.aspx.vb" Inherits="Wertübergabe.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<LINK href="Styles.css" type="text/css" rel="stylesheet">
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">





<script type="text/javascript">
<!--
function Check(the_form) {
sJungvieh1Ti = the_form.testform.Jungvieh1Ti.value;
sJungvieh1Mi = the_form.testform.Jungvieh1Mi.value;
sJungvieh1Gu =the_form.testform.Jungvieh1Gu.value;

iJungvieh1Ti = intVal(sJungvieh1Ti);
iJungvieh1Mi = intVal(sJungvieh1Mi);
iJungvieh1Gu = intVal(sJungvieh1Gu);

if (iJungvieh1Ti + iJungvieh1Mi + iJungvieh1Gu == 100) {
window.alert('Alles ok');
} else {
window.alert('Bitte gueltige Werte eingeben');
}
}


//-->
</script>


</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="testform" method="post" runat="server">
<table cellSpacing="0" cellPadding="0" width="557" bgColor="#efebef" border="0">
<tr>
<!-- Beginn Headline -->
<td align="left" colSpan="7"><img height="10" alt="" src="file:///C:\Inetpub\wwwroot\pix\topline1.jpg" width="557"
border="0"></td>
</tr>
<tr>
<td align="right" bgColor="#ffffff" colSpan="7"><img alt="" src="file:///C:\Inetpub\wwwroot\pix\headline1.jpg" border="0"></td>
</tr>
<tr>
<td align="left" colSpan="7"><img height="10" alt="" src="file:///C:\Inetpub\wwwroot\pix\topline2.jpg" width="557"
border="0"></td>
</tr>
<!-- Ende Headline -->
<!-- Beginn Berechnungstable -->
<tr>
<td class="listhead" style="WIDTH: 31px" vAlign="middle" align="center" height="21"><!-- leeres Feld --></td>
<td class="listhead" style="WIDTH: 325px" align="left">Rinder</td>
<td class="listhead" align="center">Bestand</td>
<td class="listhead" align="center">Davon gealpt</td>
<td class="listhead" align="center">Tiefstall</td>
<td class="listhead" align="center">Mist/ Jauche</td>
<td class="listhead" align="center">Gülle</td>
</tr>
<tr>
<td class="list1" style="WIDTH: 31px" align="center" height="21">8</td>
<td class="list1" style="WIDTH: 325px" align="left">Schlachtkälber unter 1/2 Jahr</td>
<td class="list2" align="center"><asp:textbox id="Jungvieh1Be" runat="server" Width="50" Textmode="SingleLine"></asp:textbox></td>
<td class="list2" align="center"><asp:textbox id="Jungvieh1Dg" runat="server" Width="50" Textmode="SingleLine"></asp:textbox></td>
<td class="list2" align="center"><asp:textbox id="Jungvieh1Ti" runat="server" Width="50" Textmode="SingleLine"></asp:textbox></td>
<td class="list2" align="center"><asp:textbox id="Jungvieh1Mi" runat="server" Width="50" Textmode="SingleLine"></asp:textbox></td>
<td class="list2" align="center"><asp:textbox id="Jungvieh1Gu" runat="server" Width="50" Textmode="SingleLine"></asp:textbox></td>
</tr>
</table>
<input id="button" style="BORDER-RIGHT: black 0px solid; BORDER-TOP: black 0px solid; FONT-SIZE: 11px; BORDER-LEFT: black 0px solid; WIDTH: 65px; COLOR: #7c587f; BORDER-BOTTOM: black 0px solid; BACKGROUND-COLOR: #efebef; TEXT-DECORATION: underline"
onclick="return check(this.form);" type="submit" value="Berechnen" name="button" runat="server">
<A href="2.aspx" runat="server">Zur 2ten Seite</A>
 
Mal auf den ersten Blick:
PHP:
sJungvieh1Ti = the_form.testform.Jungvieh1Ti.value;
Da liegt der Fehler: Wenn Du das Formular schon an the_form übergibst, ist "testform" überflüssig. Korrekt wäre:
PHP:
sJungvieh1Ti = the_form.Jungvieh1Ti.value;
Notfalls hol Dir die Controls mit "document.getElementById('Jungvieh1Ti')" - das ist auch sehr zuverlässig ;)

Gruß

P.S.: bin ich blind, oder wird Dein Formtag nicht geschlossen? ;)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück