| Autor | Zpráva | ||
|---|---|---|---|
| look23 Profil * |
#1 · Zasláno: 19. 9. 2013, 10:36:28
Zdravím,
na stránce mám několik formářů. <form action="" method="post" onsubmit="return checkHandOverForm({id});" name="formular{id}" id="frm{id}"></form> Odesílá se vždy jen jeden. V javascriptu přes nově otevřené okno ukládám do hlavního okna. Na konci pak přes script odesílám konkrétní formulář přes document.getElementById("frm"+cislo).submit();, ale to způsobí, že se odešle prázdný a přitom tam ty údaje jsou. Setkal se někdo s tím, že by se odeslal formulář bez dat nebo tam mám nějakou lamerskou chybu, kterou pořád přehlížím? Děkuju |
||
| peta Profil |
#2 · Zasláno: 19. 9. 2013, 10:51:38
Link na stranku?
Delas "lamerskou chybu", pravdepodobne odesilas prazdny formular, spatne zkopirovana data nebo jiny formular nebo mas formular ve formulari. Bez kodu a vstupnich dat se to neda zjistit. |
||
| look23 Profil * |
#3 · Zasláno: 19. 9. 2013, 11:42:24
Notes.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Poznámky</title>
<script type="text/javascript">
function Init () {
var re_id = new RegExp('id=(\\d+)');
var cislo = (re_id.exec(String(window.location)) ? new Number(RegExp.$1) : 0);
var sharedObject = window.dialogArguments;
var notes = document.getElementById ("notes");
var notes_all = document.getElementById ("notes_all");
notes.value = sharedObject.notes;
notes_all.value = sharedObject.notes_all;
}
// save dialog
function OnOK () {
var re_id = new RegExp('id=(\\d+)');
var cislo = (re_id.exec(String(window.location)) ? new Number(RegExp.$1) : 0);
var notes = document.getElementById ("notes");
var notes_all = document.getElementById ("notes_all");
if (window.showModalDialog) {
var sharedObject = {};
sharedObject.notes = notes.value;
sharedObject.notes_all = notes_all.value;
sharedObject.cislo = cislo;
if( notes_all.value != '' )
{
if( notes.value != '' ) info = 4;
else info = 1;
}
else
{
if( notes.value != '' ) info = 5;
else info = 2;
}
sharedObject.info = info;
window.returnValue = sharedObject;
}
else {
// if not modal, we cannot use the returnValue property, we need to update the opener window
window.opener.UpdateFields (notes.value, notes_all.value, cislo, info);
}
window.close ();
}
// close dialog
function OnCancel () {
window.close ();
}
</script>
<body onload="Init ();">
Všeobecná poznámka:<br/>
<textarea id="notes_all" rows="5" cols="25"></textarea><br/>
Individuální poznámka:<br/>
<textarea id="notes" rows="5" cols="25"></textarea><br/>
<br/>
<button onclick="OnOK ()">OK</button> <button onclick="OnCancel ()">Cancel</button>
</body>
</html>Hlavní okno (TPL) {literal}
<script type="text/javascript">
function formSubmit(cislo)
{
document.getElementById("frm"+cislo).submit();
}
// z notes do edit
function UpdateFields (newFore, newSur, cislo, info) {
var notes = document.getElementById ("notes"+cislo);
var notes_all = document.getElementById ("notes_all"+cislo);
var obr = document.getElementById ("info"+cislo);
notes.value = newFore;
notes_all.value = newSur;
obr.src="/img/info"+info+".png";
formSubmit(cislo);
}
// z edit do notes
function ShowModal (cislo) {
var notes = document.getElementById ("notes"+cislo);
var notes_all = document.getElementById ("notes_all"+cislo);
var sharedObject = {};
sharedObject.notes = notes.value;
sharedObject.notes_all = notes_all.value;
if (window.showModalDialog) {
var retValue = showModalDialog ("/notes.html?id="+cislo, sharedObject, "dialogWidth:200px; dialogHeight:250px; dialogLeft:350px;");
if (retValue) {
UpdateFields (retValue.notes, retValue.notes_all, retValue.cislo, retValue.info);
}
}
else {
// we want similar functionality in Opera, but it's not modal!
var modal = window.open ("{/literal}{$E_CHANNEL_URL}{literal}/notes.html", null, "width=200,height=200,left=300,modal=yes,alwaysRaised=yes", null);
modal.dialogArguments = sharedObject;
}
}
function checkHandOverForm(id) {
// kontrola jestli jsou v ostatních polích čísla
}
</script>
{/literal}
<table>
{foreach ...}
<tr>
<form action="" method="post" onsubmit="return checkHandOverForm({$id});" name="formular{$id}" id="frm{$id}">
<td align="right">
<td bgcolor="#ffccff" title="{$notes_all}">
{if $general_notes neq ''}
{if $notes neq ''}
{assign var="info" value="4"}
{else}
{assign var="info" value="1"}
{/if}
{else}
{if $notes neq ''}
{assign var="info" value="5"}
{else}
{assign var="info" value="2"}
{/if}
{/if}
<img src="/img/info{$info}.png" id="info{$id}" style="cursor: pointer;" onClick="ShowModal({$id});">
<input type="text" name="notes_ind_1" id="notes{$id}" value="{$notes}">
<input type="text" name="notes_ind_2" value="{$notes}">
<input type="text" name="notes_all_1" id="notes_all{$id}" value="{$general_notes}">
<input type="text" name="notes_all_2" value="{$general_notes}">
</td>
<td>
<input type="hidden" name="id" value="{$id}">
</td>
<td align="right">{$zaznam}</td>
</form>
</tr>
{/foreach}
</table> |
||
| _es Profil |
#4 · Zasláno: 19. 9. 2013, 11:50:17
look23:
A kde je definovaná tá neznáma, mnohokrát použitá, premenná $id?
|
||
| look23 Profil * |
#5 · Zasláno: 19. 9. 2013, 11:55:24
_es:
Všechny proměnný se tahají přes foreach z objektu a databáze. Správně by tam mělo být {$objekt->id} |
||
| _es Profil |
look23:
Ťažko nad tým špekulovať, keď nevieme, čo všetko server z nejakých objektov a databázy odošle prehliadaču. Keby si ten problém zredukoval len na HTML, možno by ti mohlo poradiť viac ľudí. Alebo by sa hodila aj „živá“ ukážka. |
||
| look23 Profil * |
#7 · Zasláno: 19. 9. 2013, 12:09:58
Jeden řádek tabulky
<tr class="kniha_col_1"> <form action="" method="post" id="frm73856"> <td > <img src="/img/info1.png" id="info73856" style="cursor: pointer;" onClick="ShowModal(73856);"> <input type="text" name="notes_ind_1" id="notes73856" value=""> <input type="text" name="notes_ind_2" value=""> <input type="text" name="notes_all_1" id="notes_all73856" value="pokus"> <input type="text" name="notes_all_2" value="pokus"> </td> <td> <input type="submit" onsubmit="return checkHandOverForm(73856);" name="akce" id="trans_send73856" value="Uložit" class="button_dark"> </td> </form> </tr> |
||
| _es Profil |
#8 · Zasláno: 19. 9. 2013, 12:17:59
look23:
Ale ten „jeden riadok“ nejako nesedí s [#1]. Udalosť onsubmit má formulár, nie odosielacie tlačítko.
|
||
| polonium Profil |
A bavíme se o tom, že když odesíláš ajaxový požadavek tak ty data nemáš nebo že na straně serveru nedostaneš žádná data.
|
||
| look23 Profil * |
#10 · Zasláno: 19. 9. 2013, 14:36:06
polonium:
Nedostávám žádná data, na první pohled se to chová jakoby k odeslání formuláře došlo, ale ve skutečnosti se jen reloadne stránka a nic se neprovede. |
||
| martin1312 Profil |
#11 · Zasláno: 19. 9. 2013, 14:41:50
look23:
_es ti už napísal, kde je chyba [#8] |
||
| look23 Profil * |
#12 · Zasláno: 19. 9. 2013, 14:48:53
martin1312:
Ale i tak to nepomůže. Pokud to udělám takto. <form action="" method="post" onsubmit="return checkHandOverForm(73883);" id="frm73883"> <input type="submit" name="akce" id="trans_send73883" value="Uložit" class="button_dark"> </form> Tak je to pořád stejné jako [#10], dokonce jsem okomentoval ostatní formuláře, aby se to netlouklo a nic. |
||
| peta Profil |
onsubmit="return checkHandOverForm(73883);" function checkHandOverForm(id) {
// kontrola jestli jsou v ostatních polích čísla
}<form action="" method="post" onsubmit="return checkHandOverForm(73883);" id="frm73883"> echo '<hr><pre>'; print_r($_POST); echo '</pre><hr>'; |
||
| look23 Profil * |
#14 · Zasláno: 19. 9. 2013, 15:33:44
peta:
Pro print_r($_POST); při tom odesílání je $_POST prázdné. Při je problém stejný jako u toho odesílání scriptem. <input type="button" onClick="formSubmit(73883)" id="trans_send73883" value="Uložit" class="button_dark"> <input type="submit" id="trans_send73883" value="Uložit" class="button_dark"> |
||
| polonium Profil |
#15 · Zasláno: 19. 9. 2013, 16:29:29
A koukal jsi ve firebugu ze ty data skutecne neposilas? Pouzivas nejaky framework?
|
||
| _es Profil |
#16 · Zasláno: 19. 9. 2013, 21:55:45
look23:
Vyrob „živú“ ukážku, nikomu sa nechce z teba „dolovať“ dostatok informácií na vyriešenie tvojho problému. |
||
| look23 Profil * |
#17 · Zasláno: 20. 9. 2013, 14:48:45
Všem:
Děkuji za spolupráci - nakonec jsem to obešel, věci se ukládají v tom malém okně a do velkého jen javascriptem pošlu návratovou ohdnotu na aktualizaci různých prvků formuláře. Po refresh stránky se ty údaje zaktualizují ze zdroje. |
||
|
Časová prodleva: 13 let
|
|||
0