Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
Autor | Správa |
---|
Registrovaný: 08.08.11 Prihlásený: 27.08.11 Príspevky: 5 Témy: 2 | 2 |
Dobrý deň, potreboval by som Vašu pomoc zo scriptom dynamicField ( http://www.quackfuzed.com/demos/jQuery/dynamicField/index.cfm)
Originalny input element musi byť:
Kód: <input type='text' name='name_1' id='name_1' value='' class='textInput removable' /> Ale ja to potrebujem mať takto: Kód: <input type='text' name='name_1[]' id='name_1[]' value='' class='textInput removable' /> (Keď to takto spravim tak to nejde.) Takže ja potrebujem pridať [ ] za name_1. Je potrebne zmeniť tento script, len ja neviem ako. Kód: /* * jQuery dynamicField plugin * Copyright 2009, Matt Quackenbush (http://www.quackfuzed.com/) * * Find usage demos at http://www.quackfuzed.com/demos/jQuery/dynamicField/index.cfm) * * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. * * Version: 1.0 * Date: 8/13/2009 */ ;(function($) { $.fn.dynamicField = function(options) { if ( $(this).attr("id") == undefined ) { alert("The dynamicField plugin could not be initialized.\n\nPlease check the selector."); return $; } var f = $(this); var settings = $.extend({ maxFields: 5, removeImgSrc: "images/icons/cross.png", spacerImgSrc: "images/spacer.gif", addTriggerClass: "add-field-trigger", removeImgClass: "remove-field-trigger", hideClass: "hide", cloneContainerId: f.attr("id").replace(/^(.+)([_-][0-9]+)$/,"$1"), rowContainerClass: f.attr("class"), labelText: f.children("label") .html(), baseName: f.children("input") .attr("name") .replace(/^(.+[_-])([0-9]+)$/,"$1"), addContainerId: "add-" + f.children("input") .attr("name") .replace(/^(.+)([_-][0-9]+)$/,"$1") .replace(/_/g,"-") + "-container" },options); var getFields = function() { return $("div." + settings.rowContainerClass); }; // handle hide/show, etc var addRemoveBtnCk = function() { var fields = getFields(); var len = fields.length; fields.each(function(i,elem) { $(elem) .children("img") .attr({ "src":(len == 1) ? settings.spacerImgSrc : settings.removeImgSrc, "class":(len == 1) ? "" : settings.removeImgClass }); }); if ( len > (settings.maxFields-1) ) { $("div#" + settings.addContainerId).addClass(settings.hideClass); } else { $("div#" + settings.addContainerId).removeClass(settings.hideClass); } }; // handle field removal $("img." + settings.removeImgClass).live("click",function() { // remove the selected row $(this).parent("div." + settings.rowContainerClass).remove(); // rebrand the remaining fields sequentially getFields().each(function(i,elem) { var pos = new Number(i+1); var d = $(elem) .attr("id",settings.cloneContainerId + "-" + pos); d.children("label") .attr("for",settings.baseName + pos) .html((pos > 1) ? "" : settings.labelText); d.children("input") .attr({ "id":settings.baseName + pos, "name":settings.baseName + pos }); }); addRemoveBtnCk(); }); // handle field add $("div#" + settings.addContainerId + " span." + settings.addTriggerClass).click(function() { var len = getFields().length; var pos = new Number(len+1); var newDiv = f .clone() .attr("id",settings.cloneContainerId + "-" + pos) .addClass(settings.rowContainerClass); newDiv.children("label") .attr("for",settings.baseName + pos) .html(""); newDiv.children("input") .attr({ "id":settings.baseName + pos, "name":settings.baseName + pos, "value":"" }); newDiv.children("img") .attr("src",settings.removeImgSrc); if ( len > 0 ) { $("div#" + settings.cloneContainerId + "-" + len).after(newDiv); } else { $("div#" + settings.addContainerId).before(newDiv); } addRemoveBtnCk(); }); }; })(jQuery);
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Pri jQuery majú znaky [] špeciálny význam (na čo konkrétne sa používajú určite zistíš v dokumentácii).
Pri odosielaní stačí, aby to [] bolo v atribúte name, takže po úprave môžeš použiť niečo takéto. Problém je, že to nebude fungovať bez tých [] v name, ale aj to by sa dalo upraviť komplexnejšou zmenou settings.baseName (ale keďže ja to nepotrebujem, robiť to nebudem, každopádne ide len o miernu úpravu originálneho regexp).
Kód: /* * jQuery dynamicField plugin * Copyright 2009, Matt Quackenbush (http://www.quackfuzed.com/) * * Find usage demos at http://www.quackfuzed.com/demos/jQuery/dynamicField/index.cfm) * * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. * * Version: 1.0 * Date: 8/13/2009 */ ;(function($) { $.fn.dynamicField = function(options) { if ( $(this).attr("id") == undefined ) { alert("The dynamicField plugin could not be initialized.\n\nPlease check the selector."); return $; } var f = $(this); var settings = $.extend({ maxFields: 5, removeImgSrc: "/commonassets/images/icons/cross.png", spacerImgSrc: "/commonassets/images/spacer.gif", addTriggerClass: "add-field-trigger", removeImgClass: "remove-field-trigger", hideClass: "hide", cloneContainerId: f.attr("id").replace(/^(.+)([_-][0-9]+)$/,"$1"), rowContainerClass: f.attr("class"), labelText: f.children("label") .html(), baseName: f.children("input") .attr("name"), baseId: f.children("input") .attr("name") .replace(/^(.+[_-])([0-9]+)$/,"$1"), addContainerId: "add-" + f.children("input") .attr("id") .replace(/^(.+)([_-][0-9]+)$/,"$1") .replace(/_/g,"-") + "-container" },options); var getFields = function() { return $("div." + settings.rowContainerClass); }; // handle hide/show, etc var addRemoveBtnCk = function() { var fields = getFields(); var len = fields.length; fields.each(function(i,elem) { $(elem) .children("img") .attr({ "src":(len == 1) ? settings.spacerImgSrc : settings.removeImgSrc, "class":(len == 1) ? "" : settings.removeImgClass }); }); if ( len > (settings.maxFields-1) ) { $("div#" + settings.addContainerId).addClass(settings.hideClass); } else { $("div#" + settings.addContainerId).removeClass(settings.hideClass); } }; // handle field removal $("img." + settings.removeImgClass).live("click",function() { // remove the selected row $(this).parent("div." + settings.rowContainerClass).remove(); // rebrand the remaining fields sequentially getFields().each(function(i,elem) { var pos = new Number(i+1); var d = $(elem) .attr("id",settings.cloneContainerId + "-" + pos); d.children("label") .attr("for",settings.baseId + pos) .html((pos > 1) ? "" : settings.labelText); d.children("input") .attr({ "id":settings.baseId + pos, "name":settings.baseName }); }); addRemoveBtnCk(); }); // handle field add $("div#" + settings.addContainerId + " span." + settings.addTriggerClass).click(function() { var len = getFields().length; var pos = new Number(len+1); var newDiv = f .clone() .attr("id",settings.cloneContainerId + "-" + pos) .addClass(settings.rowContainerClass); newDiv.children("label") .attr("for",settings.baseId + pos) .html(""); newDiv.children("input") .attr({ "id":settings.baseId + pos, "name":settings.baseName, "value":"" }); newDiv.children("img") .attr("src",settings.removeImgSrc); if ( len > 0 ) { $("div#" + settings.cloneContainerId + "-" + len).after(newDiv); } else { $("div#" + settings.addContainerId).before(newDiv); } addRemoveBtnCk(); }); }; })(jQuery);
Kód: <div class="ctrlHolder"> <div id="removable-name-container-1" class="removable-field-row"> <label for="name_1">Name</label> <input type="text" name="name[]" id="name_1" value="" class="textInput removable" /> <img src="/commonassets/images/spacer.gif" width="16" height="16" alt="" title="Remove This Item" class="" /> </div> <div id="add-name-container" class="add-field-container"> <span class="add-field-trigger"> <img src="/commonassets/images/icons/add.gif" alt="" title="Add New Item" /> Add Row </span> </div> </div>
|
|
Registrovaný: 08.08.11 Prihlásený: 27.08.11 Príspevky: 5 Témy: 2 | 2 |
no len ja to potrebujem mať napr. takto: name_1[], name_2[] ... ale nevadi, aj tak diky za čas....
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
V takom prípade budeš musieť upraviť jQuery.
Určite chceš, aby mal každý, novo pridaný prvok, iné číslo a aj [] na konci? Ak áno, tak si neviem predstaviť, k čomu to má slúžiť. (ak by mali rovnaký názov a [] na konci, tak by to v Php vytvorilo pole, a zmysel toho si predstaviť viem)
|
|
Registrovaný: 08.08.11 Prihlásený: 27.08.11 Príspevky: 5 Témy: 2 | 2 |
potrebujem to pretože chcem poslať viac dát naraz z tých istých poli, (výsledok potom zasielam vďaka cyklu do db):
vyzerá to napr. takto:
[code]
Uživateľ 1.
<input type='text' name='meno[]' value=''/>
<input type='text' name='tel_1[]' value=''/> (tu je to spomínané name_1)
<input type='text' name='tel_2[]' value=''/>
...
Uživateľ 2.
[code]<input type='text' name='meno[]' value=''/>
<input type='text' name='tel_1[]' value=''/>
<input type='text' name='tel_2[]' value=''/>
...
<input type='submit' name='odoslat' value='Odoslat'>
[/code]
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 | 181 Bydlisko: Nitra / Bra... |
Kód: newDiv.children("input") .attr({ "id":settings.baseId + pos, "name":settings.baseName + "[]", "value":"" });
19ty riadok odspodu
_________________ Sorry za prelkepy |
|
Registrovaný: 08.08.11 Prihlásený: 27.08.11 Príspevky: 5 Témy: 2 | 2 |
vďaka ale nepomohlo to, keď toto zmením v skripte, skript ide ale hodnoty tomu pridariť nevie, a keď pridám [] do imputu tak to nespusti skript:
Kód: <input type='text' name='name_1[]' id='name_1[]' value='' class='textInput removable' />
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Ty chceš, pomocou toho pluginu, pridávať naraz viac vstupných elementov?
Ak áno, tak ten plugin nebude fungovať, pretože funguje len keď je v tom riadku jediný input element (teda tak trochu funguje aj keď ich tam je viac, ale napr. všetkým elementom v riadku dá rovnaké name a id).
PS: Možno by si sa mohol pozrieť na jquery-dynamic-form.
|
|
Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v PHP, ASP | 3 | 452 | 28.09.2011 22:56 Ando | | v Assembler, C, C++, Pascal, Java | 1 | 2045 | 19.11.2008 14:51 Dark_Raven | | v Assembler, C, C++, Pascal, Java | 6 | 2094 | 11.05.2009 8:48 sangokoko | | v Operačné systémy Microsoft | 0 | 290 | 24.12.2014 22:35 dejum | | v Počítačové hry | 2 | 532 | 17.04.2008 20:50 tairikuokami | | v Redakčné systémy | 2 | 584 | 25.07.2007 12:57 kapo04 | | v Operačné systémy Unix a Linux | 2 | 385 | 11.12.2011 20:11 FERDA23 | | v HTML, XHTML, XML, CSS | 11 | 810 | 09.02.2008 1:06 HAE07 | | v PHP, ASP | 25 | 1121 | 04.01.2010 15:37 Tominator | | v Siete | 3 | 443 | 09.08.2011 13:19 michalesku | | v JavaScript, VBScript, Ajax | 5 | 923 | 13.06.2008 22:47 emer | | v Assembler, C, C++, Pascal, Java | 2 | 653 | 25.06.2015 11:59 nBXXL | | v Delphi, Visual Basic | 3 | 582 | 15.10.2010 10:05 coldak | | v Android, iOS, Windows Phone (Mobile) | 10 | 686 | 05.05.2014 21:54 XOLOO | | v Assembler, C, C++, Pascal, Java | 4 | 800 | 07.08.2009 22:15 marian_sk | | v Assembler, C, C++, Pascal, Java | 10 | 1557 | 18.11.2006 10:07 audiotrack |
|