Sainiharish Ответов: 1

Редактируемый выпадающий список с главной страницей не работает


Я использую приведенный ниже скрипт для редактируемого выпадающего списка, и он прекрасно работает без главной страницы, но когда я применяю его с главной страницей, он не работает. кто-нибудь может помочь в этом.


<сценарий тип="текст/яваскрипт" СРЦ="https://code.jquery.com/jquery-1.10.2.js"&ГТ;&ЛТ;/скрипт>
<сценарий тип="текст/яваскрипт" СРЦ="https://code.jquery.com/ui/1.11.4/jquery-ui.js"&ГТ;&ЛТ;/скрипт>


<script type="text/javascript">
      (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) {
                          ui.item.option.selected = true;
                          this._trigger("select", event, {
                              item: ui.item.option
                          });
                      },

                      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();
          $("#toggle").click(function () {
              $("#combobox").toggle();
          });
      });
  </script>


Что я уже пробовал:

я попытался получить контрольное значение на главной странице, как показано ниже:
var combobox = document. getElementById('<%= this.ContentPlaceHolder1. FindControl ("combobox").ClientID %>');

но это не работа

F-ES Sitecore

Это сценарий на главной странице или на странице содержимого? Есть ComboBox и переключаться на главную страницу или страницы содержания? Решение довольно прямолинейное, но оно зависит от того, где все находится.

http://forums.asp.net/t/2034467.aspx?Связи c+регулирование+через+на jQuery+когда+с+главной+страницы

Sainiharish

я проверил скрипт на главной странице и странице контента тоже, но не работает. выпадающий список на странице содержимого, в этой ситуации, где я должен поместить мастер-страницу скрипта или страницу содержимого и что я должен изменить в jquery

F-ES Sitecore

Эта ссылка охватывает скрипт на главной странице, обращающийся к компонентам на странице содержимого, и наоборот. Кроме того, мастер-элементы управления доступом на главной странице (код для этого тот же, что и для страницы контента), так что просто посмотрите, как это делается в ссылке, и сделайте то же самое. До сих пор неясно, где все находится, поэтому трудно дать вам конкретный ответ.

ZurdoDev

Идентификатор клиента изменяется, когда вы помещаете его на главную страницу. Просто сделайте небольшую отладку, и вы точно узнаете, что происходит.

Sainiharish

я проверил скрипт на главной странице и странице контента тоже, но не работает. выпадающий список на странице содержимого, в этой ситуации, где я должен поместить мастер-страницу скрипта или страницу содержимого и что я должен изменить в jquery

Vincent Maverick Durano

Где Ваша html-разметка?

Sainiharish

Ниже приведена HTML-разметка на странице содержимого и выпадающий список, заполненный источником данных в коде позади.

&ЛТ;АСП:контента ID="Content2" атрибутом ContentPlaceHolderID="объекту contentplaceholder1" атрибут runat="сервер"и GT;

< div class= "ui-widget" >
&ЛТ;как ASP:dropdownlist с ИД="выпадающий список" атрибут runat="сервер" CssClass="форма контроля" ширина="590px" высота="30 пикселей"&ГТ;
< / div>

1 Ответов

Рейтинг:
9

Vincent Maverick Durano

Попробуйте переместить свои коды в ContentHead страницы контента, а затем сделать что-то вроде этого для ссылки на серверный элемент управления:

$(function () {
	  var $cb = $("#<%=combobox.ClientID%>");
          $cb.combobox();
          $("#toggle").click(function () {
              $cb.toggle();
          });
});


Если ваш элемент переключения является серверным элементом управления, то вам также может потребоваться изменить код для доступа к нему следующим образом:

$("<%=toggle.ClientID%>").click(function () {
             $cb.toggle();
});


Если вы все еще получаете ошибку после применения этих изменений, то используйте инструменты отладчика браузера, чтобы получить сведения об ошибке.


Sainiharish

СПАСИБО дорогой мой вопрос решается этим Спасибо большое

Vincent Maverick Durano

рад быть полезным. :)

Sainiharish

Но есть новая проблема, с которой я сталкиваюсь, когда я выбираю элемент из этого редактируемого выпадающего списка и если я связываю код события s позади для onselectedindexchanged, который не выполняется. Автопостбэк тоже "верный". то, что я должен сделать. заранее спасибо

Vincent Maverick Durano

Я бы посоветовал вам создать отдельную тему для вашего нового выпуска. Не забудьте сообщить подробности.