All Downloads are FREE. Search and download functionalities are using the official Maven repository.

static.scripts.chosen.ajax-chosen.js Maven / Gradle / Ivy

There is a newer version: 0.41.3
Show newest version
(function() {
	(function($) {
		return $.fn.ajaxChosen = function(settings, callback, chosenOptions) {
			var defaultOptions, options, select;
			if (settings == null) {
				settings = {};
			}
			defaultOptions = {
				minTermLength : 1,
				jsonTermKey : "term"
			};
			select = this;
			options = $.extend({}, defaultOptions, $(select).data(), settings);
			if (!chosenOptions) {
				chosenOptions = {};
			}
			if (!chosenOptions.placeholder_text) {
				chosenOptions.placeholder_text = "请输入内容查询";
			}
			if (!chosenOptions.no_results_text) {
				chosenOptions.no_results_text = "没有匹配结果";
			}
			this.chosen(chosenOptions);
			var __input;
			if (this.prop('multiple')) {
				__input = this.next('.chosen-container').find(
						".search-field > input");
			} else {
				__input = this.next('.chosen-container').find(
						".chosen-search > input");
			}

			__input.bind('qj:execute', function() {
				var field, msg, success, untrimmed_val, val;
				untrimmed_val = $(this).val();
				val = $.trim($(this).val());
				if (val === $(this).data('prevVal') && untrimmed_val.length>0) {
					return false;
				}
				$(this).data('prevVal', untrimmed_val);
				if (val.length < options.minTermLength) {
					return false;
				}
				field = $(this);
				if (options.data == null) {
					options.data = {};
				}
				options.data[options.jsonTermKey] = val;
				if (options.postData != undefined) {
					var extraData = options.postData();
					$.each(extraData, function(key, value) {
						options.data[key] = value;
					});
				}
				success = options.success;
				options.success = function(data) {
					var items, nbItems, selected_values;
					if (data == null) {
						return;
					}
					selected_values = [];
					select.find('option').each(
							function() {
								if (!$(this).is(":selected")) {
									return $(this).remove();
								} else {
									return selected_values.push($(this).val()
											+ "-" + $(this).text());
								}
							});
					items = callback(data);
					nbItems = 0;
					$.each(items,
							function(value, text) {
								nbItems++;
								if ($.inArray(value + "-" + text,
										selected_values) === -1) {
									return $("




© 2015 - 2024 Weber Informatics LLC | Privacy Policy