Načítání hodnot z formulářu a refresh – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Načítání hodnot z formulářu a refresh – JavaScript, AJAX, jQuery – Fórum – Programujte.comNačítání hodnot z formulářu a refresh – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
omorok0
Newbie
12. 8. 2014   #1
-
0
-

Dobrá den,

Mám malý problém s JQuery.

Mám php/html formulář (pro příklad jsem ho hodně zjednodušil): 

echo '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<script type="text/javascript" src="/jquery/jquery-1.9.1.js"></script>
<script type="text/javascript" src="/jquery/jquery-migrate-1.1.1.min.js"></script> 

  
<script language="JavaScript" type="text/JavaScript"></script>

<style type="text/css">



</style>
</head>

<body>

';

if(isset($_POST['pridat_go']))
{	//jestli tlačítko bylo zmačknuté tak jdi dál, jinak budete pokračovat ve formuláři
        require_once 'php/pridat.php';
                    
}

echo '
      <form action="'.$_SERVER["PHP_SELF"].'?id='.$res_over['id'].'" method="POST" enctype="multipart/form-data" >
      
      ';
      
      $hledat = mysql_query("SELECT * FROM `tabulka` ORDER BY `id` ASC");  //vzestupně
      if(mysql_num_rows($hledat)!=0)
      {
                     while($a_hledat = mysql_fetch_assoc($hledat))
                     {
                              if($a_hledat['id'] == $x)
                              {
                                        $vlozeno = $a_hledat['vlozeno'];
                                        echo '
                                             <fieldset>
                                             <legend>'.$a_hledat['id'].'</legend>
                                             <label>Minule vloženo číslo: '.$vlozeno.'</label>
                                             <input id="vlozeno" type="hidden"  value="'.$vlozeno.'" />
                                             <label>Vložte číslo: <input type="text" id="cislo" name="cislo" maxlength="10" /></label>
                                             <span id="result"><br />
                                             
                                             <br />
                                             
                                             ';
                              }
                     }                
      
      }
      
      echo '
      <input type="submit" name="pridat_go" value="OK!">
      </form>
                                                                               
</body>
</html>';

Do tohoto formuláře načítám vstupní údaje z databáze a tím měním hodnoty: "id" a "vlozeno".

Tato část funguje a není s ní problém.

Dále mám JQuery script, který mi při zadání dat do inputu stáhne data, spočítá a vrátí do id=result.

Tento script funguje jen při prvním zadání. Jakmile odešlu formulář a tím provedu refresh a zpracuji minulá data do databáze ( require_once 'php/pridat.php' ), tak při zadání dat do inputu již script nefunguje. Zjistil jsem, že nefunguje "JQuery: $("#cislo").bind("change", function() ". Pokud změnim id z #cislo např. na #cisloo , tak to funguje, po vrácení to nefunguje. Tím jsem usoudil, že JQuery stále čeká na předešlý formulář, který ho poprvé vyvolal.

Java/JQuery script:

$(document).ready(function(){

          
          
          
          $("#cislo").bind("change", function() {
          
                    //získáme vstupy
                    var cislo = $("#cislo").val();
                    var vlozeno = $("#vlozeno").val(); 

                    var rozdil = vlozeno - cislo;

                    $('#result').html(rozdil + '<input name="rozdil" id="rozdil" type="hidden"  value="'+rozdil+'" />');

          });
});

Je možné při každmém odeslání/načtení formuláře vyresetovat JQuery, nebo jinak ho donutit načítat aktuální formulář?

Někde jsem četl, že by mohla pomoci změna v adresném řádku. Upravil jsem ho následovně:

$sekundy = Time();

echo '
      <form action="'.$_SERVER["PHP_SELF"].'?id='.$res_over['id'].'&sekundy='.$sekundy.'" method="POST" enctype="multipart/form-data" >

ale nepomohlo to.

Děkuji za radu...

Nahlásit jako SPAM
IP: 89.24.254.–
Reklama
Reklama
Ericsko+3
Stálý člen
13. 8. 2014   #2
-
0
-
Nahlásit jako SPAM
IP: 88.212.40.–
Řešení
omorok0
Newbie
13. 8. 2014   #3
-
0
-
Vyřešeno Nejlepší odpověď

#2 Ericsko
Děkuji za odpověď. 

Radu jsem zkusil, ale nepomohla. Tak jsem bádal dál, až jsem se podíval přes internetový prohlížeč do zdrojového kódu a tam jsem našel zakopaný problém. Při zpracovávání odeslaného formuláře v "php/pridat.php" ukládám znovu odeslané hodnoty do inputu type hydden pro případné znovu odeslání dat při nezadání nutných dat do formulářu. Tim se tyto inputy vloží do stránky a mají stejná "id". Tím JQuery čeká na první "id", což je ze zpracovaného formuláře.

Děkuji a omlouvám se...

Nahlásit jako SPAM
IP: 89.24.254.–
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, 23 hostů

 

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