[ Príspevkov: 8 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

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);


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

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>


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 08.08.11
Prihlásený: 27.08.11
Príspevky: 5
Témy: 2 | 2
Napísal autor témyOffline : 27.08.2011 10:18 | Dynamicke pole - problem s pridanim zatvoriek

no len ja to potrebujem mať napr. takto: name_1[], name_2[] ... ale nevadi, aj tak diky za čas....


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

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)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 08.08.11
Prihlásený: 27.08.11
Príspevky: 5
Témy: 2 | 2
Napísal autor témyOffline : 27.08.2011 10:58 | Dynamicke pole - problem s pridanim zatvoriek

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]


Offline

Užívateľ
Užívateľ
Dynamicke pole - problem s pridanim zatvoriek

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 08.08.11
Prihlásený: 27.08.11
Príspevky: 5
Témy: 2 | 2
Napísal autor témyOffline : 27.08.2011 13:55 | Dynamicke pole - problem s pridanim zatvoriek

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' /> 


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

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.


 [ Príspevkov: 8 ] 


Dynamicke pole - problem s pridanim zatvoriek



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Dynamicke pole..

v PHP, ASP

3

452

28.09.2011 22:56

Ando

V tomto fóre nie sú ďalšie neprečítané témy.

Dynamicke pole v Triede C++

v Assembler, C, C++, Pascal, Java

1

2045

19.11.2008 14:51

Dark_Raven

V tomto fóre nie sú ďalšie neprečítané témy.

DYNAMICKE vs. STATICKE pole smernikov !!!SUUURNE!!!

v Assembler, C, C++, Pascal, Java

6

2094

11.05.2009 8:48

sangokoko

V tomto fóre nie sú ďalšie neprečítané témy.

Problem s pridanim zariadenia bluetooth

v Operačné systémy Microsoft

0

290

24.12.2014 22:35

dejum

V tomto fóre nie sú ďalšie neprečítané témy.

Problem s pridanim parametra [COD 4 NoMusic]

v Počítačové hry

2

532

17.04.2008 20:50

tairikuokami

V tomto fóre nie sú ďalšie neprečítané témy.

Problem s pridanim modu (phpBB) do SQL

v Redakčné systémy

2

584

25.07.2007 12:57

kapo04

V tomto fóre nie sú ďalšie neprečítané témy.

VMWARE, REDHAT a problem s pridanim volneho miesta HDD

v Operačné systémy Unix a Linux

2

385

11.12.2011 20:11

FERDA23

V tomto fóre nie sú ďalšie neprečítané témy.

dynamicke obrazky

v HTML, XHTML, XML, CSS

11

810

09.02.2008 1:06

HAE07

V tomto fóre nie sú ďalšie neprečítané témy.

Dynamické objekty

v PHP, ASP

25

1121

04.01.2010 15:37

Tominator

V tomto fóre nie sú ďalšie neprečítané témy.

Router - dynamicke IP

v Siete

3

443

09.08.2011 13:19

michalesku

V tomto fóre nie sú ďalšie neprečítané témy.

dynamické menenie udalosti onclick

v JavaScript, VBScript, Ajax

5

923

13.06.2008 22:47

emer

V tomto fóre nie sú ďalšie neprečítané témy.

Dynamicke programovanie - maximalizacia ceny

v Assembler, C, C++, Pascal, Java

2

653

25.06.2015 11:59

nBXXL

V tomto fóre nie sú ďalšie neprečítané témy.

Delphi - Dynamické vykreslovanie (runtime) komponentov

v Delphi, Visual Basic

3

582

15.10.2010 10:05

coldak

V tomto fóre nie sú ďalšie neprečítané témy.

android ListView a jeho dynamicke nacitavanie

v Android, iOS, Windows Phone (Mobile)

10

686

05.05.2014 21:54

XOLOO

V tomto fóre nie sú ďalšie neprečítané témy.

C++ a Dynamické pretypovanie funkcie z DLLky...

v Assembler, C, C++, Pascal, Java

4

800

07.08.2009 22:15

marian_sk

V tomto fóre nie sú ďalšie neprečítané témy.

POLE

v Assembler, C, C++, Pascal, Java

10

1557

18.11.2006 10:07

audiotrack



© 2005 - 2024 PCforum, edited by JanoF