Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Javascript záměna "čárky" tečkou.

Dobrý den potřeboval bych skript na záměnu čárky tečkou.
Už jsem něco zkoušel ale nefunguje mi to.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="www.w3.org/1999/xhtml">

<head>
  <title></title>
</head>

<script language="JavaScript" type="text/javascript">
function Zamena(value) {
  if(value == "") return false;
  value = value.replace(/,/, '.');
  if(parseFloat(value) != (value*1)) return false;
  return true;
}
</script>

<body>


<input type="text" id="zadat" onclick="Zamena(this.value)" value="" />
<input type="text" />

</body>

</html>
Předmět Autor Datum
Ještě že mě láásko mááš.... <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>…
Flash_Gordon 14.08.2011 18:28
Flash_Gordon
Hoj máš pravdu ještě že tě lásko mám. Ale nefunguje to . a ještě jeden dotaz ? nemáš ICQ ? či skype,…
Vasekdvor 14.08.2011 19:04
Vasekdvor
Ak chceš nahradiť každú čiarku (nie len prvú), tak v regulárnom výraze musíš použiť modifikátor "g":…
los 14.08.2011 19:01
los
no takle dělám to proto, že mám PHP (ano můžu to udělat i v PHP ale nefunguje mi to) a právě že když…
Vasekdvor 14.08.2011 19:08
Vasekdvor
Keď máš server, tak je zbytočné to robiť na klientovi. Čo ti nefunguje v PHP, str_replace? $value =…
los 14.08.2011 19:16
los
ano přesně to co jste napsal mi nefunguje.
Vasekdvor 14.08.2011 19:22
Vasekdvor
Ako konkrétne to nefunguje?
los 14.08.2011 19:27
los
Do premennej $PP priraďuješ hodnotu z $_POST['PP']. Potom kontroluješ, či je $PP nastavené cez isset…
los 14.08.2011 20:03
los
Díky moc šéfe už to funguje. Fakt mockrát děkuju. poslední
Vasekdvor 15.08.2011 00:42
Vasekdvor

Ještě že mě láásko mááš....

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
   <title>test</title>
  
  <script type="text/javascript">



function Zamena(value) {
  if(value == "") return;
  value = value.replace(',', '.');
  alert(value);
  if(parseFloat(value) != (value*1)) return;
  return true;
}



</script> 
  </head>
  <body>
      
<input type="text" id="zadat" onclick="Zamena(this.value)" value="" />
<input type="text" />

  </body>
</html>

Ak chceš nahradiť každú čiarku (nie len prvú), tak v regulárnom výraze musíš použiť modifikátor "g":

value = value.replace(/,/g, '.');

Čo chceš s tou hodnotou robiť? Nahradiť to v tom istom inpute alebo to priradiť tomu druhému inputu?

Kontrola, či to je číslo, sa robí nasledovne:

!Math.isNaN(+value)

Ukážka:

<!DOCTYPE html>
<html><head>
	<meta charset="utf-8">
	<title>test</title>
</head><body>
	<form>
		<input name="vstup" />
		<input name="vystup" />
	</form>
	<script>
var onInput = function() {
	this.form.vystup.value = this.form.vstup.value.replace(/,/g, '.');
}
var form = document.forms[0];
form.vstup.oninput = function() {
	this.onkeydown = null;
	onInput.call(this);
};
form.vstup.onkeydown = function() {
	onInput.call(this);
};
	</script>
</body></html>

no takle dělám to proto, že mám PHP (ano můžu to udělat i v PHP ale nefunguje mi to) a právě že když se napíše čárka tak to nepočítá když napíšu tečku tak to jde, protože amíci zase maj jako desetinný oddělovač tečku místo čárky.A ano potřebuju to napsat do jednoho inputu a pomocí např.: onBlur to změnit na tečky ještě před odesláním "formuláře".Takže napíšu třeba 1,25 a když kliknu jinam tak se to v tom inputu změní na 1.25 .

Keď máš server, tak je zbytočné to robiť na klientovi. Čo ti nefunguje v PHP, str_replace?

$value = str_replace(',', '.', $value);

Ak to chceš robiť v JavaScripte, tak zmeníš telo onInput na this.value = this.value.replace(/,/g, '.'). A dáš to do obsluhy onblur. Prípadne dáš tú kontrolu do form.onsubmit a v prípade nesprávneho vstupu vrátiš false. Ale v prvom rade by som to ošetroval na serveri.

Do premennej $PP priraďuješ hodnotu z $_POST['PP']. Potom kontroluješ, či je $PP nastavené cez isset($PP). Keď dáš medzi to $PP = str_replace(',', '.', $PP), tak následná kontrola cez isset bude vždy true. Takže zmeň tie kontroly isset($PP) a isset($P) na isset($_POST['PP']) a isset ($_POST['P']).

Takže funkcia str_replace ti funguje normálne. Používaj var_dump a error_reporting, ak ti niečo nefunguje na serveri.

Edit: Počas ladenia si nastav error_reporting a zobrazovanie chýb v konfigurácii (napr. cez .htaccess). Prípadne priamo v kóde na začiatku stránky zavolaj:

error_reporting(E_ALL);
ini_set('display_errors','On');

Potom budeš vidieť, prečo ti to nefunguje. Napr. isset by si mal použiť hneď pri čítaní z poľa $_POST, napr.:

$P = isset($_POST['P']) ? $_POST['P'] : null;

Edit 2: Alebo to môžeš spraviť úplne celé v JavaScripte a nebudeš na to potrebovať server.

Zpět do poradny Odpovědět na původní otázku Nahoru