# 2x Input verknüpfen



## Jebote (28. Okt 2020)

Guten morgen 

ich bin ein absoluter Java Anfänger und hab gleich am Anfang ein Problem 

ich habe 2 Inputs 1x

<input type="number"  name="amount_sell" value="" oninput="update()">

und 1 x 

<input type="number"  name="amount_buy" value="" oninput="update()">


<script type="text/javascript">
function update() {
result = document.forms['exchange'].elements['amount_sell'].value;
resulto = document.forms['exchange'].elements['amount_buy'].value;

document.forms['exchange'].elements['amount_buy'].value = (1 * result / 2 - 1).toFixed(9);


document.forms['exchange'].elements['amount_sell'].value = (4 * resulto / 2 - 1).toFixed(9);


}
</script>

wenn ich aber jetzt einen wert auf der Input 1 eintippe möchte ich das der wert auf Input type 2 angezeigt wird 
das gleicht mit der Input type 2 

Ich möchte _mich im Voraus bedanken_.


----------



## BestGoalkeeper (28. Okt 2020)

Das ist eine JavaScript Frage, diese könnte hierher https://www.java-forum.org/forum/angular-react-jquery-fragen-zu-javascript.35/ verschoben werden.


----------



## kneitzel (28. Okt 2020)

Habe ich Dich richtig verstanden: Derzeit hast Du Code, der beide Felder anpasst. Aber Du möchtest immer nur ein Feld anpassen?

Warum machst Du nicht zwei Funktionen? Erste Funktion: Wenn das erste Feld angepasst wird, dann liest du dieses aus und setzt den neuen Wert im zweiten Feld. Und umgedreht in einer zweiten Funktion.

Wenn es eine Funktion bleiben soll: Du könntest mit Parametern arbeiten. Du könntest also eine Methode erstellen, die Eingabefeld, Ausgabefeld und den Faktor als Parameter übernimmt.


----------



## Jebote (28. Okt 2020)

Vielen lieben dank für die schnelle Antwort  

wie bereits gesagt bin ich ein totaler Anfänger könntest du mir ein ein Beistpiel schicken wie sowas aussehen kann?


----------



## Jebote (28. Okt 2020)

es ist ein Währungsrechner ich möchte zum beispiel eure in doller ausrechnen wenn ich in der ersten Input denn doller wert eingebe möchte ich
das es mir in der 2 Input den Euro wert anzeigt und wenn ich in der 2 Input Euro wert angebe soll es mir in der ersten doller wert anzeigen eigentlich ganz simpel  die Berechnung dafür hab ich bereits in PHP geschrieben jetzt brauch ich nur noch Javascript


----------



## kneitzel (28. Okt 2020)

Also gut, bauen wir einfach einmal eine kleine Seite. Ich würde Dir aber dringend raten, dir eine Einführung in JavaScript und html anzusehen....

Erst einmal die Seite, die ich aufgebaut habe, als Ganzes:

```
<html>
<head>
  <title>Rechner</title>
</head>
<body>
  <script type="text/javascript">
function update(source, target, multiplier) {
  result = document.getElementById(source).value * multiplier;
  document.getElementById(target).value = result;
}
</script>
  <forms id='exchange'>
    <input type="number" id="amount_sell" value="" oninput="update('amount_sell', 'amount_exchange', 2)">
    <input type="number" id="amount_exchange" value="" oninput="update('amount_exchange', 'amount_sell', 0.5)">
  </forms>
</body>
```

Kernelement dabei sind die input Elemente. 
Diese haben ids, damit sie gezielt angesprochen werden können.
Und wenn sich an der Eingabe etwas ändert, dann wird die update Funktion aufgerufen mit 3 Argumnenten: Source Id, Target Id und ein Multiplikator.

Die update Funktion hat die 3 Parameter. Über document.getElementById wird das jeweilige Element gesucht und value ausgelesen bzw. gesetzt. Die Variable result hätte man sich auch sparen können....


----------



## Jebote (28. Okt 2020)

Wow genau das wie ich es gesucht habe 

wie bekomme ich jetzt diese werte hinein 



document.forms['exchange'].elements['amount_buy'].value = (<?echo number_format($exchange_from['prices'], 2, '.', '');?> * result / <?echo number_format($exchange_to['prices'], 2, '.', '');?> - <? echo $exchange_fee;?>).toFixed(9);


document.forms['exchange'].elements['amount_sell'].value = (<?echo number_format($exchange_to['prices'], 2, '.', '');?> * resulto / <?echo number_format($exchange_from['prices'], 2, '.', '');?> - <? echo $exchange_fee;?>).toFixed(9);


----------



## Jebote (28. Okt 2020)

sorry bin absoluter Anfänger


----------



## Jebote (29. Okt 2020)

ich hab es soweit hinbekommen 

<input type="number" placeholder="Enter amount to sell" class="form-control border-input" name="amount_sell"  id="amount_sell" style="height:40px;" step="0.00000100" value="<?echo number_format($exchange_from['menge'], 8, '.', '');?>" oninput="update('amount_sell', 'amount_buy', <?echo number_format($exchange_from['prices'], 8, '.', '');?> / <?echo number_format($exchange_to['prices'], 8, '.', '');?>)">

<input type="number"  placeholder="Enter amount to buy" class="form-control border-input" name="amount_buy"  id="amount_buy" style="height:40px;" value=""  oninput="update('amount_buy', 'amount_sell', <?echo number_format($exchange_to['prices'], 9, '.', '');?> / <?echo number_format($exchange_from['prices'], 9, '.', '');?>)">


<script type="text/javascript">
function update(source, target, multiplier) {
result = document.getElementById(source).value * multiplier;
document.getElementById(target).value = (result).toFixed(8);
document.getElementById("bhash").innerHTML = (result).toFixed(8);
}
</script>

wie mach ich jetzt das auf input type sell 2 % abgezogen werden ?


----------



## kneitzel (29. Okt 2020)

Jebote hat gesagt.:


> wie mach ich jetzt das auf input type sell 2 % abgezogen werden ?


Also Du hast einen Multiplikator. Wenn Du 2% abziehen willst, dann ist das ja ein x - 0,2 x = (1-0,2) x = 0,98 x
Wenn x nun multiplier ist, dann könntest du das im Aufruf z.B. berücksichtigen: Statt 8 wären das dann z.B. 8 * 0,98 = 7,84.


----------



## Jebote (29. Okt 2020)

danke wie würde das im Javascript aussehen ?


----------



## kneitzel (29. Okt 2020)

Du hast Doch die Aufrufe, die du in oninput="..." gesetzt hast. Und da ist ein Parameter der multiplier. also das, was bei dir so komplex geworden ist:
`<?echo number_format($exchange_to['prices'], 9, '.', '');?> / <?echo number_format($exchange_from['prices'], 9, '.', '');?>`

Und da kannst Du natürlich auch noch weitere Operationen durchführen zusätzlich zu der Division, die Du da machst ...

Aber man könnte das auch lesbarer machen und z.B, weitere Parameter einführen oder so.

Da wäre aber mein genereller Tipp: Geh und lerne doch einfach einmal JavaScript. Dann verstehst Du auch Code, den Du bekommst und kannst diesen anpassen. Es gibt zu JavaScript genug Einführungen und so, die man im Netz problemlos mit der Suchmaschine deiner Wahl finden kann.


----------



## Jebote (29. Okt 2020)

ich benötige diese Funktion aber in Javascript Javascript lernen? ich bin erst im Anfang  mein Programmierer meldet sich nicht mehr und ich diese Funktion dringend brauche beschäftige ich mich damit  könntest du mir bitte erklären wie ich jetzt im script - 2 prozent mache danke voraus


----------



## kneitzel (29. Okt 2020)

Ich habe es Dir doch erläutert. 2% Abziehen ist eine Multiplikation mit 0,98. Und wenn Du das direkt im der Methode machen willst, dann baust es direkt in die Methode ein. Wo ist das Problem?

Wenn Du den Code bisher nicht nachvollziehen kannst, dann solltest Du Dir das auf jeden fall erarbeiten, sprich: Wie wird eine Funktion in JavaScript geschrieben, wie läuft das mit Parametern, wie werden Variablen benutzt u.s.w.


----------



## Jebote (29. Okt 2020)

ok ich hab es mit der o´beren methode gelöst  ich hab noch ein anliegen wie füge ich diese Funktionen noch hinzu?
also bei klick auf Button soll es die summe in input type amount sell einfügen 



<script>
document.getElementById('btn').addEventListener("click", function(){
      inhalt=document.getElementById('amount').innerHTML;
      document.getElementById('amount_sell').value=inhalt;
});
</script>


Vielen lieben dank top Forum


----------

