Nefunkční přepočet mezi inputy ve ff – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Nefunkční přepočet mezi inputy ve ff – JavaScript, AJAX, jQuery – Fórum – Programujte.comNefunkční přepočet mezi inputy ve ff – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Fonadius0
Návštěvník
6. 10. 2007   #1
-
0
-

zdravím, mám stránku na které chci provádět některé jednodušší výpočty. používám k tomu tři inputy, jeden z nich mám nastavéný na readonly. Výpočet volám při opuštění inputu. Z mně neznámého důvodu mi to funguje jak v opeře tak v ie ale ve ff ne, javascript mám povolený :) a bez readonly to taky nefunguje.. Poradíte mi někdo?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title></title>
</head>
<body>
<script>
function fce()
{
k=document.formul.a.value;
l=document.formul.b.value;
if (isNaN(k))
{
alert('Neplatná hodnota prosím zadejte číslo');
document.formul.vstrom.value='';
document.getElementById("c").innerText='';
}
else
{
if ((l!='') && (k!=''))
{
document.getElementById("c").innerText=parseFloat(k)-parseFloat(l);
}
if ((l=='') || (k==''))
{
document.getElementById("c").innerText='';
}
}
}
</script>
<form name='formul'>
<input type='text' name='a' onBlur="fce()">
<input type='text' name='b' onBlur="fce()" >

<input type='text' id='c' class='vysledek'>
</form>
</body>
</html>

Nahlásit jako SPAM
IP: ...–
Nevěřte moc firmám, které slibují komplexní řešení vašich problémů. Komplexní řešení z pravidla mívají netriviální imaginární část.
Petroff0
Věrný člen
7. 10. 2007   #2
-
0
-

FF má trochu odlišnou výbavu DOM metod - seznam viz http://developer.mozilla.org/en/docs/DOM:element#Introduction
Problémy dělá např. chybějící innerText/outerText/outerHTML. Naštěstí zápis do/čtení z elementů zvládne innerHTML který funguje ve všech browserech (pro číselný obsah bez obav použij namísto innerText).

Problém je, že takto zapisuješ obsah mezi HTML značky, např.do DIVu provede eDiv.innerHTML=123 jako výsledek <DIV>123</DIV>.
Ty potřebuješ zapsat do vstupního pole (a metoda innerText u IE to sice umí, ale IE je jediný, v Opeře to taky nefunguje).
K manipulaci používej vlastnost=atribut INPUTu value.

Nahlásit jako SPAM
IP: ...–
Petroff0
Věrný člen
7. 10. 2007   #3
-
0
-

Tohle dělá přesně to co žádáš (OK test: Opera,IEs,FF).
Ještě lepší než použití otravného ALERT okna by bylo vložit upozornění přímo dovnitř vadného inputu, nastavit klávesový vstup tak, aby při prvním znaku bylo políčko nejdřív "vyprázdněno" ...chceš ?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title></title>
</head>
<body>
<script>
function fce(inp)
{
var k=inp.form.a.value;
var l=inp.form.b.value;
inp.form.c.value='';
if (isNaN(inp.value))
{
alert('Neplatná hodnota prosím zadejte číslo');
inp.value='';
inp.focus();
}
else if (k && l) inp.form.c.value=parseFloat(k)-parseFloat(l);
}
</script>
<form name='formul'>
<input type='text' name='a' onBlur="fce(this)">
<input type='text' name='b' onBlur="fce(this)">
<input type='text' name='c' id='c' class='vysledek' readonly>
</form>
</body>
</html>

Nahlásit jako SPAM
IP: ...–
Petroff0
Věrný člen
7. 10. 2007   #4
-
0
-

HOTOVO (S FF byly problémy; vyřešilo to malinké zpoždění)
K pohodlné práci bych ještě přidal ENTER:
1.Zadal by hodnotu
2.Přemístil by kursor na nevyplněný input
K pohodlné práci bych ještě přidal TAB:
1>2>1>...inputy
(myslím že onkeydown ovládač by to mohl zvládnout)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title> Numbers in FORM/INPUTs </title>
</head>
<body>
<script>
function fce(inp)
{
var k=inp.form.a.value;
var l=inp.form.b.value;
inp.form.c.value='';
if (isNaN(inp.value))
{
inp.value='> ZADEJTE ČÍSLO <';
inp.select();
setTimeout(function(){inp.focus()},100);
}
else if (k && l) inp.form.c.value=parseFloat(k)-parseFloat(l);
}
</script>
<form name='formul'>
<input type='text' name='a' onBlur="fce(this)">
<input type='text' name='b' onBlur="fce(this)">
<input type='text' name='c' id='c' class='vysledek' readonly>
</form>
</body>
</html>


Nahlásit jako SPAM
IP: ...–
Fonadius0
Návštěvník
7. 10. 2007   #5
-
0
-

To Petroff:strašně moc díky. Ten pohyb pomocí inputu tam určitě ještě přidám, ale chtěl jsem mít nejdřív hotovou základní kostru než tam budu podobné věci přidávat...

Nahlásit jako SPAM
IP: ...–
Nevěřte moc firmám, které slibují komplexní řešení vašich problémů. Komplexní řešení z pravidla mívají netriviální imaginární část.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý