Красивый dropdown и не работающий submit

207
20 февраля 2018, 08:14

Имею следующий dropdown (demo прилагается). Помогите пожалуйста добавить в него onchange="this.form.submit()" чтобы он отрабатывался

Из-за скриптов, добавление в select этого куска кода, submit не отрабатывается. Сам select я выделил в форму:

<form action="/onchange1"  method="post">
                  <input type="hidden" name="onchang1" value="">
</form/

/** 
 * 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 
	}; 
 
	$.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; 
			this._transformSelect(); 
			this.opts = this.listopts.children( 'li' ); 
			this.optsCount = this.opts.length; 
			this.size = { width : this.dd.width(), height : this.dd.height() }; 
			this.inputEl = $( '<input type="hidden" name="cd-dropdown"></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 = ''; 
			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' ), 
					label = $this.text(); 
 
				val !== -1 ? 
					classes !== undefined ? 
						optshtml += '<li data-value="' + val + '"><span class="' + classes + '">' + label + '</span></li>' : 
						optshtml += '<li data-value="' + val + '"><span>' + label + '</span></li>' : 
					selectlabel = label; 
 
			} ); 
 
			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(); 
 
		}, 
		_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' } ); 
			} 
 
		}, 
		_throwHook : function( el, action, trigger ){ 
			var $el = $( el ); 
			var eventName = [ action, trigger, 'dropdown' ].join( '.' ); 
			var event = $.Event( eventName ); 
			event.value = $el.data( 'value' ); 
			$el.trigger( event ); 
		}, 
		_initEvents : function() { 
			 
			var self = this, 
				throwHook = this._throwHook; 
			 
			this.selectlabel.on( 'mousedown.dropdown', function( event ) { 
				self.opened ? self.close() : self.open(); 
				return false; 
 
			} ); 
 
			this.opts.on( 'click.dropdown', function() { 
				if( self.opened ) { 
					var opt = $( this ); 
					opt.delegate( 'li', 'click.dropdown', throwHook( this, 'opened', 'click') ); 
					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 );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<!DOCTYPE html> 
<html lang="en"> 
	<head> 
		<meta charset="UTF-8" /> 
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">  
		<meta name="viewport" content="width=device-width, initial-scale=1.0">  
		<title>Simple Effects for Drop-Down Lists</title> 
		<meta name="description" content="Simple Effects for Drop-Down Lists" /> 
		<meta name="keywords" content="drop-down, select, jquery, plugin, fallback, transition, transform, 3d, css3" /> 
		<meta name="author" content="Codrops" /> 
		<link rel="shortcut icon" href="../favicon.ico">  
		<link rel="stylesheet" type="text/css" href="https://tympanus.net/Development/SimpleDropDownEffects/css/style5.css" /> 
		<script src="https://tympanus.net/Development/SimpleDropDownEffects/js/modernizr.custom.63321.js"></script> 
	</head> 
	<body> 
		<div class="container">	 
			<!-- Codrops top bar --> 
			<div class="codrops-top clearfix"> 
				 
				</span> 
			</div><!--/ Codrops top bar --> 
      <form action="/onchange1"  method="post"> 
                      <input type="hidden" name="onchang1" value=""> 
			<section class="main clearfix"> 
				<div class="fleft"> 
					<select id="cd-dropdown" class="cd-select" onchange="this.form.submit()"> 
						<option value="-1" selected>Select a browser</option> 
						<option value="1" class="icon-chrome">Chrome</option> 
						<option value="2" class="icon-safari">Safari</option> 
						<option value="3" class="icon-IE">Internet Explorer</option> 
						<option value="4" class="icon-firefox">Firefox</option> 
						<option value="5" class="icon-opera">Opera</option> 
					</select> 
				</div> 
			</section> 
      </form> 
		</div><!-- /container --> 
		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
		<script type="text/javascript" src="js/jquery.dropdown.js"></script> 
		<script type="text/javascript"> 
			 
			$( function() { 
				 
				$( '#cd-dropdown' ).dropdown( { 
					gutter : 5, 
					stack : false, 
					slidingIn : 100 
				} ); 
 
			}); 
 
		</script> 
	</body> 
</html>

READ ALSO
Как правильно задать позиционирование popup окна?

Как правильно задать позиционирование popup окна?

Использую шаблон "Лайтшоп" на Opencart 23

132
Не работает js скрипт на мобильных

Не работает js скрипт на мобильных

Для валидирования и маски данных кредитной карты использую модуль creditlyjs

142
cheerio javascript тег li разбивает тег p

cheerio javascript тег li разбивает тег p

Почему так происходит?

160