2016-03-01 2 views
0

Я использую jquery autoselect combobox plugin и, возможно, ответы доступны для получения значения первого автоматического выделения combobox на его событии onchange, но они не работают для двух comboboxes на одной странице , Anyhelp будет оценен. Вот мой кодКак открыть autoselect combobox2 из onchange событие autoselect combbox 1

<!doctype html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title>jQuery UI Autocomplete - Combobox</title> 
     <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> 
     <script src="//code.jquery.com/jquery-1.10.2.js"></script> 
     <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 
     <link rel="stylesheet" href="/resources/demos/style.css"> 
     <style> 
      .custom-combobox { 
       position: relative; 
       display: inline-block; 
      } 

      .custom-combobox-toggle { 
       position: absolute; 
       top: 0; 
       bottom: 0; 
       margin-left: -1px; 
       padding: 0; 
      } 

      .custom-combobox-input { 
       margin: 0; 
       padding: 5px 10px; 
      } 
     </style> 
     <script> 
      (function($) { 
       $.widget("custom.combobox", { 
        _create: function() { 
         this.wrapper = $("<span>") 
          .addClass("custom-combobox") 
          .insertAfter(this.element); 
         this.element.hide(); 
         this._createAutocomplete(); 
         this._createShowAllButton(); 
        }, 
        _createAutocomplete: function() { 
         var selected = this.element.children(":selected"), 
          value = selected.val() ? selected.text() : ""; 
         this.input = $("<input>"). 
          appendTo(this.wrapper).val(value). 
          attr("title", "") 
          .addClass("custom-combobox-input ui-widget ui-widget-content ui-state-default ui-corner-left") 
          .autocomplete({ 
           delay: 0, 
           minLength: 0, 
           source: $.proxy(this, "_source") 
          }) 
          .tooltip({ 
           tooltipClass: "ui-state-highlight" 
          }); 
         this._on(this.input, { 
          autocompleteselect: function(event, ui) { 
           alert("the select event has fired!"); 
           ui.item.option.selected = true; 
           this._trigger("select", event, { 
            item: ui.item.option 
           }); 
           autocompleteselect.trigger("change"); 
          }, 
          change: function(event, ui) { 
           if (!ui.item) { 
            var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex($(this).val()) + "$", "i"), 
             valid = false; 
            autocompleteselect.children("option").each(function() { 
             if ($(this).text().match(matcher)) { 
              this.selected = valid = true; 
              return false; 
             } 
            }); 
           } 
          } 
          //autocompletechange: "_removeIfInvalid" 
         }); 
        }, 
        _createShowAllButton: function() { 
         var input = this.input, 
          wasOpen = false; 
         $("<a>") 
          .attr("tabIndex", -1) 
          .attr("title", "Show All Items") 
          .tooltip() 
          .appendTo(this.wrapper) 
          .button({ 
           icons: { 
            primary: "ui-icon-triangle-1-s" 
           }, 
           text: false 
          }) 
          .removeClass("ui-corner-all") 
          .addClass("custom-combobox-toggle ui-corner-right") 
          .mousedown(function() { 
           wasOpen = input.autocomplete("widget").is(":visible"); 
          }) 
          .click(function() { 
           input.focus(); 
           // Close if already visible 
           if (wasOpen) { 
            return; 
           } 
           // Pass empty string as value to search for, displaying all results 
           input.autocomplete("search", ""); 
          }); 
        }, 
        _source: function(request, response){ 
        var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); 
       response(this.element.children("option").map(function() { 
        var text = $(this).text(); 
        if (this.value && (!request.term || matcher.test(text))) 
         return { 
          label: text, 
          value: text, 
          option: this 
         }; 
       })); 
      }, 
      _removeIfInvalid: function(event, ui) { 
       // Selected an item, nothing to do 
       if (ui.item) { 
        return; 
       } 
       // Search for a match (case-insensitive) 
       var value = this.input.val(), 
        valueLowerCase = value.toLowerCase(), 
        valid = false; 
       this.element.children("option").each(function() { 
        if ($(this).text().toLowerCase() === valueLowerCase) { 
         this.selected = valid = true; 
         return false; 
        } 
       }); 
       // Found a match, nothing to do 
       if (valid) { 
        return; 
       } 
       // Remove invalid value 
       this.input.val("") 
        .attr("title", value + " didn't match any item") 
        .tooltip("open"); 
       this.element.val(""); 
       this._delay(function() { 
        this.input.tooltip("close").attr("title", ""); 
       }, 2500); 
       this.input.autocomplete("instance").term = ""; 
      }, 
      _destroy: function() { 
       this.wrapper.remove(); 
       this.element.show(); 
      } 
      }); 
      })(jQuery); 
      $(function() { 
       $("#combobox").combobox({ change: function() { alert("changed"); }}); 
       $("#combobox_retailer").combobox(); 
       $("#toggle").click(function() { 
        $("#combobox").toggle(); 
       }); 
       $("#combobox").change(function() { 
        alert(this.value); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <div class="ui-widget"> 
      <label>Your preferred programming language: </label> 
      <select id="combobox" name="combobox1"> 
       <option value="">Select one...</option> 
       <option value="ActionScript">ActionScript</option> 
       <option value="AppleScript">AppleScript</option> 
       <option value="Asp">Asp</option> 
       <option value="BASIC">BASIC</option> 
       <option value="JavaScript">JavaScript</option> 
       <option value="Lisp">Lisp</option> 
      </select> 
     </div> 
     <div class="ui-widget"> 
      <label>Another </label> 
      <select id="combobox2"> 
       <option value="">Select one...</option> 
      </select> 
     </div> 
    </body> 
</html> 
+0

теперь мой браузер консоль показывает мне скобка отсутствует вопрос ... после строки _source: функция (запрос, ответ) должен быть «{» ... – Banik

+0

Я обновил код – DevOps

+0

заменил строку autocompleteselect.trigger («change»); с this._trigger ("change"); и посмотрим, что произойдет ... – Banik

ответ

0

заменить строку

autocompleteselect.trigger("change"); 

с

this._trigger("change"); 
Смежные вопросы