汇联通执法队后台管理系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ajax-chosen.js 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // Generated by CoffeeScript 1.3.1
  2. (function($) {
  3. return $.fn.ajaxChosen = function(settings, post_callback, pre_callback) {
  4. var chosenXhr, defaultOptions, options, select;
  5. if (settings == null) {
  6. settings = {};
  7. }
  8. if (post_callback == null) {
  9. post_callback = (function() {});
  10. }
  11. if (pre_callback == null) {
  12. pre_callback = (function() {});
  13. }
  14. defaultOptions = {
  15. minTermLength: 3,
  16. afterTypeDelay: 500,
  17. jsonTermKey: "term"
  18. };
  19. select = this;
  20. chosenXhr = null;
  21. options = $.extend({}, defaultOptions, settings);
  22. this.chosen();
  23. return this.each(function() {
  24. return $(this).next('.chosen-container').find(".search-field > input, .chosen-search > input")
  25. .bind('keyup', function() {
  26. var field, msg, success, val;
  27. val = $.trim($(this).val());
  28. msg = val.length < options.minTermLength ? "Keep typing..." : "Looking for '" + val + "'";
  29. select.next('.chosen-container').find('.no-results').text(msg);
  30. if (val === $(this).data('prevVal')) {
  31. return false;
  32. }
  33. $(this).data('prevVal', val);
  34. if (this.timer) {
  35. clearTimeout(this.timer);
  36. }
  37. if (val.length < options.minTermLength) {
  38. return false;
  39. }
  40. field = $(this);
  41. if (!(options.data != null)) {
  42. options.data = {};
  43. }
  44. options.data[options.jsonTermKey] = val;
  45. success = options.success;
  46. options.success = function(data) {
  47. var items, selected_values;
  48. if (!(data != null)) {
  49. return;
  50. }
  51. selected_values = [];
  52. select.find('option').each(function() {
  53. if (!$(this).is(":selected")) {
  54. return $(this).remove();
  55. } else {
  56. return selected_values.push($(this).val() + "-" + $(this).text());
  57. }
  58. });
  59. items = post_callback(data);
  60. $.each(items, function(value, text) {
  61. if ($.inArray(value + "-" + text, selected_values) === -1) {
  62. return $("<option />").attr('value', value).html(text).appendTo(select);
  63. }
  64. });
  65. select.trigger("chosen:updated");
  66. if (success != null) {
  67. success(data);
  68. }
  69. field.attr('value', val);
  70. return field.css('width', 'auto');
  71. };// end success
  72. pre_callback();
  73. return this.timer = setTimeout(function() {
  74. if (chosenXhr) {
  75. chosenXhr.abort();
  76. }
  77. return chosenXhr = $.ajax(options);
  78. }, options.afterTypeDelay);
  79. });//end keyup
  80. });
  81. };
  82. })(jQuery);