Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 3 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
jQuery list plugin

Registrovaný: 21.02.07
Prihlásený: 29.06.21
Príspevky: 150
Témy: 59
Bydlisko: Prievidza
Príspevok NapísalOffline : 06.11.2016 17:33

Ahojte potrebujem poradit s problemom nad ktorym si uz dlho lamem hlavu a nedari sa mi to vyriesit. Je mi jasne ze sa to da viac sposobom vyriesit tak za aku kolvek radu som vam vdacny. :)

Zacnem takto:

Na web potrebujem mat aj pole select (dajme mu name="pole[]") potrebujem to ako pole nakolko vedla selectu bude tlacitko ktore prida rovnaky select aby bolo mozne vybrat viac hodnot. Toto vsetko mam vyriesene. Problem nastal v tom ked som dostal za ulohu ten select nastylovat aj hover efect na option a kedze tak lahko sa to cez CSS neda ovplivnit musel som ten select prerobit na LIST a tu nastava problem. Pouzil som jQuery plugin SimpleDropDownEffects ktory mi z toho selectu spravi list. Pomocou css som ho nastyloval vsetko funguje az do momentu kedy dam pridat dalsi select ten pridavam tymto kodom

Kód:
$('.input2').click(function() {
            original_managed.clone().appendTo( "#clone_managed" );
        });


select sa pekne zobrazi avsak neda sa na neho kliknut ani sa nerozroluje proste jQuery ho nenacita ako zonu kliku stale funguje len ten matersky select Tu prikladam kod z toho pluginu cast ktora by mala ovladat clik som oznacil (teda aspon si myslim ze je to ona) ale neviem ako to upravit aby reagovala aj na ten klik tych clonov.

Kód:
/**
 * jquery.dropdown.js v1.0.0
 * http://www.codrops.com
 *
 * Licensed under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 *
 * Copyright 2012, Codrops
 * http://www.codrops.com
 */
;( function( $, window, undefined ) {

   'use strict';

   $.DropDown = function( options, element ) {
      this.$el = $( element );
      this._init( options );
   };

   // the options
   $.DropDown.defaults = {
      speed : 300,
      easing : 'ease',
      gutter : 0,
      // initial stack effect
      stack : true,
      // delay between each option animation
      delay : 0,
      // random angle and positions for the options
      random : false,
      // rotated [right||left||false] : the options will be rotated to thr right side or left side.
      // make sure to tune the transform origin in the stylesheet
      rotated : false,
      // effect to slide in the options. value is the margin to start with
      slidingIn : false,
      onOptionSelect : function(opt) { return false; }
   };

   $.DropDown.prototype = {

      _init : function( options ) {

         // options
         this.options = $.extend( true, {}, $.DropDown.defaults, options );
         this._layout();
         this._initEvents();

      },
      _layout : function() {

         var self = this;
         this.minZIndex = 1000;
         var value = this._transformSelect();
         this.opts = this.listopts.children( 'li' );
         this.optsCount = this.opts.length;
         this.size = { width : this.dd.width(), height : this.dd.height() };
         
         var elName = this.$el.attr( 'name' ), elId = this.$el.attr( 'id' ),
            inputName = elName !== undefined ? elName : elId !== undefined ? elId : 'cd-dropdown-' + ( new Date() ).getTime();

         this.inputEl = $( '<input type="hidden" name="' + inputName + '" value="' + value + '"></input>' ).insertAfter( this.selectlabel );
         
         this.selectlabel.css( 'z-index', this.minZIndex + this.optsCount );
         this._positionOpts();
         if( Modernizr.csstransitions ) {
            setTimeout( function() { self.opts.css( 'transition', 'all ' + self.options.speed + 'ms ' + self.options.easing ); }, 25 );
         }

      },
      _transformSelect : function() {

         var optshtml = '', selectlabel = '', value = -1;
         this.$el.children( 'option' ).each( function() {

            var $this = $( this ),
               val = isNaN( $this.attr( 'value' ) ) ? $this.attr( 'value' ) : Number( $this.attr( 'value' ) ) ,
               classes = $this.attr( 'class' ),
               selected = $this.attr( 'selected' ),
               label = $this.text();

            if( val !== -1 ) {
               optshtml +=
                  classes !== undefined ?
                     '<li data-value="' + val + '"><span class="' + classes + '">' + label + '</span></li>' :
                     '<li data-value="' + val + '"><span>' + label + '</span></li>';
            }

            if( selected ) {
               selectlabel = label;
               value = val;
            }

         } );

         this.listopts = $( '<ul/>' ).append( optshtml );
         this.selectlabel = $( '<span/>' ).append( selectlabel );
         this.dd = $( '<div class="cd-dropdown"/>' ).append( this.selectlabel, this.listopts ).insertAfter( this.$el );
         this.$el.remove();

         return value;

      },
      _positionOpts : function( anim ) {

         var self = this;

         this.listopts.css( 'height', 'auto' );
         this.opts
            .each( function( i ) {
               $( this ).css( {
                  zIndex : self.minZIndex + self.optsCount - 1 - i,
                  top : self.options.slidingIn ? ( i + 1 ) * ( self.size.height + self.options.gutter ) : 0,
                  left : 0,
                  marginLeft : self.options.slidingIn ? i % 2 === 0 ? self.options.slidingIn : - self.options.slidingIn : 0,
                  opacity : self.options.slidingIn ? 0 : 1,
                  transform : 'none'
               } );
            } );

         if( !this.options.slidingIn ) {
//            this.opts
//               .eq( this.optsCount - 1 )
//               .css( { top : this.options.stack ? 9 : 0, left : this.options.stack ? 4 : 0, width : this.options.stack ? this.size.width - 8 : this.size.width, transform : 'none' } )
//               .end()
//               .eq( this.optsCount - 2 )
//               .css( { top : this.options.stack ? 6 : 0, left : this.options.stack ? 2 : 0, width : this.options.stack ? this.size.width - 4 : this.size.width, transform : 'none' } )
//               .end()
//               .eq( this.optsCount - 3 )
//               .css( { top : this.options.stack ? 3 : 0, left : 0, transform : 'none' } );
         }

      },
      _initEvents : function() {
         
         var self = this;
         
         this.selectlabel.on( 'mousedown.dropdown', function( event ) {
            self.opened ? self.close() : self.open();
            return false;

         } );

// PODLA MNA BY TO MALA BYT TATO CAST

         this.opts.on( 'click.dropdown', function() {
            if( self.opened ) {
               var opt = $( this );
               self.options.onOptionSelect( opt );
               self.inputEl.val( opt.data( 'value' ) );
               self.selectlabel.html( opt.html() );
               self.close();
            }
         } );

      },
      open : function() {
         var self = this;
         this.dd.toggleClass( 'cd-active' );
         this.listopts.css( 'height', ( this.optsCount + 1 ) * ( this.size.height + this.options.gutter ) );
         this.opts.each( function( i ) {

            $( this ).css( {
               opacity : 1,
               top : self.options.rotated ? self.size.height + self.options.gutter : ( i + 1 ) * ( self.size.height/* + self.options.gutter*/ ),
               left : self.options.random ? Math.floor( Math.random() * 11 - 5 ) : 0,
               width : self.size.width,
               marginLeft : 0,
               transform : self.options.random ?
                  'rotate(' + Math.floor( Math.random() * 11 - 5 ) + 'deg)' :
                  self.options.rotated ?
                     self.options.rotated === 'right' ?
                        'rotate(-' + ( i * 5 ) + 'deg)' :
                        'rotate(' + ( i * 5 ) + 'deg)'
                     : 'none',
               transitionDelay : self.options.delay && Modernizr.csstransitions ? self.options.slidingIn ? ( i * self.options.delay ) + 'ms' : ( ( self.optsCount - 1 - i ) * self.options.delay ) + 'ms' : 0
            } );

         } );
         this.opened = true;

      },
      close : function() {

         var self = this;
         this.dd.toggleClass( 'cd-active' );
         if( this.options.delay && Modernizr.csstransitions ) {
            this.opts.each( function( i ) {
               $( this ).css( { 'transition-delay' : self.options.slidingIn ? ( ( self.optsCount - 1 - i ) * self.options.delay ) + 'ms' : ( i * self.options.delay ) + 'ms' } );
            } );
         }
         this._positionOpts( true );
         this.opened = false;

      }

   }

   $.fn.dropdown = function( options ) {
      var instance = $.data( this, 'dropdown' );
      if ( typeof options === 'string' ) {
         var args = Array.prototype.slice.call( arguments, 1 );
         this.each(function() {
            instance[ options ].apply( instance, args );
         });
      }
      else {
         this.each(function() {
            instance ? instance._init() : instance = $.data( this, 'dropdown', new $.DropDown( options, this ) );
         });
      }
      return instance;
   };

} )( jQuery, window );



ked sa mi nedarilo vyriesit tento problem skusil som ist na to inak

predtym ako volam funkciu

Kód:
$( '#type-managed-type' ).dropdown( {
   gutter : 5
} );


ktora sluzi prave na to aby zo selectu spravila list som si spravil kopiu povodneho selectu do premennej (teda aspon som si myslel)
tu je cely kod

Kód:
var original_managed = $( '#overlay_for_managed' );

if ( original_managed !== null ) {
       $( '#type-managed-type' ).dropdown( {
      gutter : 5
    } );
}



Zaroven som testoval ze ak sa zaloha nespravila nespusti sa ani ta zmena na list a potom s tou povodnou zalohou som chcel pridavat dalsie selecty po kliku a zaroven im na klik pridat aj tu funkciu na zmenu na list avsak narazil som na problem ze v tej zaloznej premenej sa nenachadza povodny select ale uz upraveny list tak som z toho jelen ked najskor robim zalohu az potom sa spusta ta funkcia a este sa ani nespusti kym neni zaloha a tym padom ked tam dava ten list vysledok je rovnaky ako pri tom prvom pripade na klik nereaguje a tym padom ostatne selecty su len mrtve nepouzitelne listy...

Hmm tak ak ste to precitali tento sloh az ku koncu tak dakujem :D a verim ze ma nasmerujete spravne aspon v jednom sposobe a spolu to vyriesime :) Vopred dakujem za pomoc :)


Offline

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

Registrovaný: 06.02.14
Prihlásený: 19.01.18
Príspevky: 443
Témy: 9
Príspevok NapísalOffline : 07.11.2016 17:26

tvoj kod som necital, ale odpoviem ti preco ti toto nejde:

Citácia:
Select sa pekne zobrazi avsak neda sa na neho kliknut ani sa nerozroluje proste jQuery ho nenacita ako zonu kliku stale funguje len ten matersky select Tu prikladam kod z toho pluginu cast ktora by mala ovladat clik som oznacil (teda aspon si myslim ze je to ona) ale neviem ako to upravit aby reagovala aj na ten klik tych clonov.


tu cas kde priradujes eventListener na tvoj select, zrejme tato cast
Kód:
this.opts.on( 'click.dropdown', function() {...


tak ho priradujes na elementy, ktore su uz na stranke pocas dom ready. to znamena ze element, ktory dynamicky vytvoris, nebude mat dany eventListener.
takze mas dve moznosti.
1. ked vytvoris dynamicky novy select, priradis mu eventlistener
2. priradis event listener na nejaky parent element a ako target urcis napr triedu tvojich selectov. napr:
Kód:
<div class="parent-element'>
  <div class="my-select">...</div>
  <div class="my-select">...</div>
  a dalsi, ktory sa vytvori dynamicky
</div>
$('.parent-element').on('click', '.my-select', function() { ... });


Offline

Užívateľ
Užívateľ
jQuery list plugin

Registrovaný: 21.02.07
Prihlásený: 29.06.21
Príspevky: 150
Témy: 59
Bydlisko: Prievidza
Príspevok Napísal autor témyOffline : 08.11.2016 13:01

Super vdaka, funguje tak uz tomu chapem :) aspon budem nabuduce vediet vdaka za pomoc!

VYRIESENE MOZETE LOCK


Odpovedať na tému [ Príspevkov: 3 ] 


Podobné témy

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

v JavaScript, VBScript, Ajax

0

383

22.07.2011 2:15

roach189 Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

1

454

19.07.2011 22:34

Ando Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Záručný list

v Obchody, reklamácie a právo

1

1578

13.07.2017 16:09

michalesku Zobrazenie posledných príspevkov

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie. Crawler list

v Internetový marketing, SEO, reklama

2

81650

12.05.2007 2:46

JanoF Zobrazenie posledných príspevkov

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

v PHP, ASP

8

1011

05.07.2008 10:13

Mysql_dodo Zobrazenie posledných príspevkov

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

v Internetový marketing, SEO, reklama

3

772

07.09.2010 20:18

shaggy Zobrazenie posledných príspevkov

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

v Počítačové hry

7

761

08.03.2012 17:56

MAFI5 Zobrazenie posledných príspevkov

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

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Správy pre vedenie fóra

34

4327

16.06.2006 0:18

JanoF Zobrazenie posledných príspevkov

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

v Ostatné

0

634

03.06.2010 3:02

Narayan Zobrazenie posledných príspevkov

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

v Obchody, reklamácie a právo

2

1219

23.02.2008 21:06

prkyyynko Zobrazenie posledných príspevkov

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

v Obchody, reklamácie a právo

5

1193

16.11.2007 20:01

falcon9 Zobrazenie posledných príspevkov

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

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

6

554

25.05.2012 10:18

Fico Zobrazenie posledných príspevkov

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

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

1

609

01.04.2011 20:45

Forty- Zobrazenie posledných príspevkov

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

v Ostatné programy

2

421

08.08.2013 20:25

elo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vlastnost - list-style: none

v HTML, XHTML, XML, CSS

27

1083

19.07.2008 12:03

Blackshadow Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pokladničny blok/ Záručny list

v Obchody, reklamácie a právo

6

682

30.01.2014 22:07

marekk5111 Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra