Autor Zpráva
ufambula
Profil *
Nemá někdo tucha jak v html5 sečíst hodnoty...minus krát děleno krásně funguje, ale plus spojuje řetězce, jediné skoro řešení je obalit vstupy do eval ale v tom případe musí být zadány všechny, já potřebuji aby to funguvalo už při zadání jediného vstupu, kousek zk:
  <table class="tablenab">
  <thead>
  <tr>
    <th colspan="4">Hmotnost</th>
  </tr>
  </thead>
  <tbody>
  <tr>
    <th class="tablenab1">Čerpadlo</th>
    <td class="tablenab2">[ kg ]</td>
    <td><input type="text" step="0" maxlength="5" pattern="[\d]{0,5}" title="Použijte čísla maximálně do 65 535." name="hm_cerpadlo" value="<?php if(!empty($nabidka["hm_cerpadlo"])) echo $nabidka["hm_cerpadlo"];?>" /></td>
    <th><input type="text" maxlength="64" name="hm_cerpadlo2" value="<?php if(!empty($nabidka["hm_cerpadlo2"])) echo $nabidka["hm_cerpadlo2"];?>" /></th>
  </tr>
  <tr class="even">
    <th>Motor</th>
    <td>[ kg ]</td>
    <td><input type="text" step="0" maxlength="5" pattern="[\d]{0,5}" title="Použijte čísla maximálně do 65 535." name="hm_motor" value="<?php if(!empty($nabidka["hm_motor"])) echo $nabidka["hm_motor"];?>" /></td>
    <th><input type="text" maxlength="64" name="hm_motor2" value="<?php if(!empty($nabidka["hm_motor2"])) echo $nabidka["hm_motor2"];?>" /></th>    
  </tr>
  <tr>
    <th>Rám</th>
    <td>[ kg ]</td>
    <td><input type="text" step="0" maxlength="5" pattern="[\d]{0,5}" title="Použijte čísla maximálně do 65 535." name="hm_ram" value="<?php if(!empty($nabidka["hm_ram"])) echo $nabidka["hm_ram"];?>" /></td>
    <th><input type="text" maxlength="64" name="hm_ram2" value="<?php if(!empty($nabidka["hm_ram2"])) echo $nabidka["hm_ram2"];?>" /></th>
  </tr>          
  <tr class="even">
    <th>Spojka</th>
    <td>[ kg ]</td>
    <td><input type="text" maxlength="5" pattern="[\d]{0,5}" title="Použijte čísla maximálně do 65 535." name="hm_spojka" value="<?php if(!empty($nabidka["hm_spojka"])) echo $nabidka["hm_spojka"];?>" /></td>
    <th><input type="text" maxlength="64" name="hm_spojka2" value="<?php if(!empty($nabidka["hm_spojka2"])) echo $nabidka["hm_spojka2"];?>" /></th>
  </tr> 
  <tr>
    <th>Okruhy</th>
    <td>[ kg ]</td>
    <td><input type="text" maxlength="4" pattern="[\d]{0,5}" title="Použijte maximálně 4 čislice." name="hm_okruhy" value="<?php if(!empty($nabidka["hm_okruhy"])) echo $nabidka["hm_okruhy"];?>" /></td>
    <th><input type="text" maxlength="64" name="hm_okruhy2" value="<?php if(!empty($nabidka["hm_okruhy2"])) echo $nabidka["hm_okruhy2"];?>" /></th>
  </tr> 
  <tr class="even">
    <th>Akustický kryt</th>
    <td>[ kg ]</td>
    <td><input type="text" maxlength="5" pattern="[\d]{0,5}" title="Použijte čísla maximálně do 65 535." name="hm_ak" value="<?php if(!empty($nabidka["hm_ak"])) echo $nabidka["hm_ak"];?>" /></td>
    <th><input type="text" maxlength="64" name="hm_ak2" value="<?php if(!empty($nabidka["hm_ak2"])) echo $nabidka["hm_ak2"];?>" /></th>
  </tr>     
  <tr>
    <th>Celková hmotnost</th>
    <td>[ kg ]</td>
    <td><input type="text" onforminput="value = eval(hm_cerpadlo.value) + eval(hm_motor.value) + eval(hm_ram.value) + eval(hm_spojka.value) + eval(hm_okruhy.value) + eval(hm_ak.value)" maxlength="6" pattern="[\d]{0,6}" title="Použijte maximálně 6 čislic." name="hm" value="<?php if(!empty($nabidka["hm"])) echo $nabidka["hm"];?>" /></td>
    <th><input type="text" maxlength="64" name="hm2" value="<?php if(!empty($nabidka["hm2"])) echo $nabidka["hm2"];?>" /></th>
  </tr>
  </tbody>
  </table>  
Joker
Profil
ufambula:
Nemá někdo tucha jak v html5 sečíst hodnoty
Asi nijak... HTML nemá proměnné ani operátory, takže sčítání něčeho moc nedává smysl.

Pravděpodobně myslíte sčítání hodnot v Javascriptu a máte stejný problém, jaký se řeší v tomto vlákně.
ufambula
Profil *
Joker:
Já zkouším html5ku která toto podporuje a všímám si že celý systém v ní vychází z javascriptu, minimálně regulární výrazy jsou naprosto stejné, takže možná toto vlákno pomůže uvidíme, zatím děkuju za čas.
Radek9
Profil
ufambula:
To není HTML, ale JS. To, že to je v HTML atributu neznamená, že je to HTML. A zpět k problému: použijte funkci parseInt().
Chamurappi
Profil
Reaguji na ufambulu:
Já zkouším html5ku která toto podporuje“ […] „regulární výrazy jsou naprosto stejné
Prohlížeče nerozlišují (a ani nebudou rozlišovat) verzi HTML, je úplně jedno, co deklaruješ. Řídí se odjakživa tím, co je dodatečně popisováno v HTML 5, až na pár novinek, které mají ovšem slabou podporu, takže nedoporučuji používat je v něčem důležitém.

Odpověď najdeš ve vlákně, na které odkazuje Joker — použij * 1.


Reaguji na Radka9:
Nedoporučuji parseInt(), z 010 udělá 8 (pokud se nezadá druhý argument).
ufambula
Profil *
Tak odkaz pomohl děkuju, sice je to tam napsané ale ne přímo v html5 tak pro přestavu změněná část:
onforminput="value = hm_cerpadlo.value * 1 + 1 * hm_motor.value * 1 + 1 * hm_ram.value * 1 + 1 * hm_spojka.value * 1 + 1 * hm_okruhy.value * 1 + 1 * hm_ak.value"
_es
Profil
ufambula asi myslel udalosť onforminput z Web Forms 2.0 funkčnú v niektorých súčasných prehliadačoch.
ufambula
Profil *
Chamurappi:
Tvůj příspěvek se mi tady objevil až po odeslání toho mého, sem si vědom že html5 (způsob vkládání js do kódu, nebo Web Forms 2.0) ještě moc podporováno není, ale je to děláno do uzavřeného systému ke kterému přistupují všichni jen přes operu. Výpočet bude stejně proveden až na úrovni php / mysql, tohle je spíše jen pro krásu. Sám se v javascriptu moc neorientuju používám spíš jen okrajově při formulářích. Každopádně děkuju za pomoct, sám bych na to asi nepřišel.
Joker
Profil
ufambula:
sice je to tam napsané ale ne přímo v html5
Ještě jednou: V HTML to udělat nelze, protože HTML nemá operátor pro sčítání.
V odkazovaném vláknu to je řešené Javascriptem, stejnětak jako v tomhle vlákně.
Navíc se mi zdá praktičtější mít skripty oddělené od HTML kódu, spíš než je mít nacpané uvnitř atributů.

_es:
ufambula asi myslel udalosť onforminput z Web Forms 2.0
Nojo... ovšem onforminput je z pohledu HTML atribut prvku. Z pohledu objektového modelu je to událost. Ani jedno nic nespočítá, akorát té události se dá přiřadit skript, který už něco spočítat může.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0