Учебники

script.aculo.us — Редактирование на месте

Редактирование на месте является одной из отличительных черт приложений Web 2.0.style.

Редактирование на месте подразумевает получение нередактируемого контента, такого как <p>, <h1> или <div>, и предоставление пользователю возможности редактировать его содержимое, просто щелкая его.

Это превращает статический элемент в редактируемую зону (однострочную или многострочную) и выскакивает кнопки отправки и отмены (или ссылки, в зависимости от ваших параметров), чтобы пользователь зафиксировал или откатил изменение.

Затем он синхронизирует редактирование на стороне сервера через Ajax и снова делает элемент не редактируемым.

Чтобы использовать возможности редактирования на месте script.aculo.us, вам необходимо загрузить модули controls.js и effect.js вместе с модулем prototype.js. Итак, ваша минимальная загрузка для script.aculo.us будет выглядеть так —

<script type = "text/javascript" src = "/javascript/prototype.js"></script>
<script type = "text/javascript" src = "/javascript/scriptaculous.js?load = effects,controls"></script>

Создание текстового редактора на месте

Весь синтаксис конструкции выглядит следующим образом:

new Ajax.InPlaceEditor(element, url [ , options ] )

Конструктор для Ajax.InPlaceEditor принимает три параметра:

  • Целевой элемент может быть либо ссылкой на сам элемент, либо идентификатором целевого элемента.

  • Второй параметр Ajax.InPlaceEditor указывает URL-адрес серверного сценария, с которым связываются после завершения редактирования значения.

  • Обычные варианты хэша.

Целевой элемент может быть либо ссылкой на сам элемент, либо идентификатором целевого элемента.

Второй параметр Ajax.InPlaceEditor указывает URL-адрес серверного сценария, с которым связываются после завершения редактирования значения.

Обычные варианты хэша.

Опции

При создании объекта Ajax.InPlaceEditor вы можете использовать один или несколько из следующих параметров.

Sr.No Вариант и описание
1

OK для подтверждения

Логическое значение, указывающее, должна ли отображаться кнопка «ОК» или нет. По умолчанию true.

2

okText

Текст для размещения на кнопку ОК. По умолчанию «хорошо».

3

cancelLink

Логическое значение, указывающее, должна ли отображаться ссылка отмены. По умолчанию true.

4

cancelText

Текст ссылки отмены. По умолчанию «отмена».

5

savingText

Текстовая строка, отображаемая как значение элемента управления во время операции сохранения (запрос, инициированный нажатием кнопки ОК), обрабатывается. По умолчанию «Сохранение».

6

clickToEditText

Текстовая строка, которая появляется как подсказка элемента управления при наведении курсора мыши.

7

строки

Количество строк, отображаемых при активном элементе управления редактированием. Любое число больше 1 вызывает использование элемента текстовой области, а не элемента текстового поля. По умолчанию 1.

8

смещ_по_столбцам

Количество столбцов в активном режиме. Если опущено, ограничение столбца не накладывается.

9

размер

То же, что и cols, но применяется только тогда, когда в строках 1.

10

highlightcolor

Цвет, применяемый к фону текстового элемента при наведении мыши. По умолчанию бледно-желтый.

11

highlightendcolor

Цвет, до которого цвет подсветки исчезает как эффект.

Обратите внимание — в некоторых браузерах поддержка выглядит нечеткой.

12

loadingText

Текст, отображаемый в элементе управления во время операции загрузки. По умолчанию это «Загрузка».

13

loadTextURL

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

14

externalControl

Элемент, который должен служить «внешним контролем», который запускает перевод редактора в активный режим. Это полезно, если вы хотите, чтобы другая кнопка или другой элемент запускали редактирование элемента управления.

15

ajaxOptions

Объект хеша, который будет передан базовому объекту Ajax Prototype для использования в качестве хеша его параметров.

OK для подтверждения

Логическое значение, указывающее, должна ли отображаться кнопка «ОК» или нет. По умолчанию true.

okText

Текст для размещения на кнопку ОК. По умолчанию «хорошо».

cancelLink

Логическое значение, указывающее, должна ли отображаться ссылка отмены. По умолчанию true.

cancelText

Текст ссылки отмены. По умолчанию «отмена».

savingText

Текстовая строка, отображаемая как значение элемента управления во время операции сохранения (запрос, инициированный нажатием кнопки ОК), обрабатывается. По умолчанию «Сохранение».

clickToEditText

Текстовая строка, которая появляется как подсказка элемента управления при наведении курсора мыши.

строки

Количество строк, отображаемых при активном элементе управления редактированием. Любое число больше 1 вызывает использование элемента текстовой области, а не элемента текстового поля. По умолчанию 1.

смещ_по_столбцам

Количество столбцов в активном режиме. Если опущено, ограничение столбца не накладывается.

размер

То же, что и cols, но применяется только тогда, когда в строках 1.

highlightcolor

Цвет, применяемый к фону текстового элемента при наведении мыши. По умолчанию бледно-желтый.

highlightendcolor

Цвет, до которого цвет подсветки исчезает как эффект.

Обратите внимание — в некоторых браузерах поддержка выглядит нечеткой.

loadingText

Текст, отображаемый в элементе управления во время операции загрузки. По умолчанию это «Загрузка».

loadTextURL

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

externalControl

Элемент, который должен служить «внешним контролем», который запускает перевод редактора в активный режим. Это полезно, если вы хотите, чтобы другая кнопка или другой элемент запускали редактирование элемента управления.

ajaxOptions

Объект хеша, который будет передан базовому объекту Ajax Prototype для использования в качестве хеша его параметров.

Параметры обратного вызова

Кроме того, вы можете использовать любую из следующих функций обратного вызова в параметре options

Sr.No Описание функции
1

OnComplete

Функция JavaScript, которая вызывается при успешном завершении запроса на сохранение. По умолчанию применяется эффект выделения для редактора.

2

OnFailure

Функция JavaScript, которая вызывается при сбое запроса на сохранение. По умолчанию выдается предупреждение с сообщением об ошибке.

3

Перезвоните

Функция JavaScript, которая вызывается непосредственно перед отправкой запроса на сохранение, чтобы получить строку запроса для отправки в запрос. Функция по умолчанию возвращает строку запроса, приравнивающую параметр запроса «значение» к значению в текстовом элементе управления.

OnComplete

Функция JavaScript, которая вызывается при успешном завершении запроса на сохранение. По умолчанию применяется эффект выделения для редактора.

OnFailure

Функция JavaScript, которая вызывается при сбое запроса на сохранение. По умолчанию выдается предупреждение с сообщением об ошибке.

Перезвоните

Функция JavaScript, которая вызывается непосредственно перед отправкой запроса на сохранение, чтобы получить строку запроса для отправки в запрос. Функция по умолчанию возвращает строку запроса, приравнивающую параметр запроса «значение» к значению в текстовом элементе управления.

Параметры CSS-стиля и идентификатора DOM

Вы также можете использовать одну из следующих опций для управления поведением редактора на месте —

Sr.No Вариант и описание
1

savingClassName

Имя класса CSS, примененное к элементу во время операции сохранения. Этот класс применяется при выполнении запроса к сохраняющему URL-адресу и удаляется при возврате ответа. Значением по умолчанию является «сохранение места редактора».

2

formClassName

Имя класса CSS применяется к форме, созданной, чтобы содержать элемент редактора. По умолчанию «inplaceeditor-form».

3

FormID

Идентификатор, примененный к форме, созданной для содержания элемента редактора.

savingClassName

Имя класса CSS, примененное к элементу во время операции сохранения. Этот класс применяется при выполнении запроса к сохраняющему URL-адресу и удаляется при возврате ответа. Значением по умолчанию является «сохранение места редактора».

formClassName

Имя класса CSS применяется к форме, созданной, чтобы содержать элемент редактора. По умолчанию «inplaceeditor-form».

FormID

Идентификатор, примененный к форме, созданной для содержания элемента редактора.

пример

Live Demo

<html>
   <head>
      <title>Simple Ajax Auto-completer Example</title>
		
      <script type = "text/javascript" src = "/javascript/prototype.js"></script>
      <script type = "text/javascript"  src = "/javascript/scriptaculous.js?load = effects,controls"></script>
      
      <script type = "text/javascript">
         window.onload = function() {
            new Ajax.InPlaceEditor(
               'theElement',
               '/script.aculo.us/transform.php',
               {
                  formId: 'whatever',
                  okText: 'Upper me!',
                  cancelText: 'Never mind'
               }
            );
         }
      </script>
   </head>
   
   <body>
      <p>Click over the "Click me!" text and then change text and click OK.</p>
      <p>Try this example with different options.</p>

      <div id = "theElement">
         Click me!
      </div>		
   </body>
</html>

При отображении нажмите и отредактируйте текст. Этот довольно тривиальный PHP-скрипт преобразует значение параметра запроса с ключом «value» в его заглавный эквивалент и записывает результат обратно в ответ.

Вот содержимое скрипта transform.php.

<?php
   if( isset($_REQUEST["value"]) ) {
      $str = $_REQUEST["value"];
      $str = strtoupper($str);
      echo "$str";
   }
?>

Это даст следующий результат —

Параметры редактора коллекций на месте

Есть еще один объект с именем Ajax.InPlaceCollectionEditor, который поддерживает редактирование на месте и дает вам возможность выбрать значение из указанных параметров.

Весь синтаксис конструкции выглядит следующим образом:

new Ajax.InPlaceCollectionEditor(element, url [ , options ] )

Конструктор для Ajax.InPlaceCollectionEditor принимает три параметра:

  • Целевой элемент может быть либо ссылкой на сам элемент, либо идентификатором целевого элемента.

  • Второй параметр Ajax.InPlaceEditor указывает URL-адрес серверного сценария, с которым связываются после завершения редактирования значения.

  • Обычные варианты хэша.

Целевой элемент может быть либо ссылкой на сам элемент, либо идентификатором целевого элемента.

Второй параметр Ajax.InPlaceEditor указывает URL-адрес серверного сценария, с которым связываются после завершения редактирования значения.

Обычные варианты хэша.

Опции

Помимо добавления опции сбора, список опций для редактора коллекции на месте является подмножеством опций, унаследованных от текстового редактора на месте.

Sr.No Вариант и описание
1

OK для подтверждения

Логическое значение, указывающее, должна ли отображаться кнопка «ОК» или нет. По умолчанию true.

2

okText

Текст для размещения на кнопку ОК. По умолчанию «хорошо».

3

cancelLink

Логическое значение, указывающее, должна ли отображаться ссылка отмены. По умолчанию true.

4

cancelText

Текст ссылки отмены. По умолчанию «отмена».

5

savingText

Текстовая строка, отображаемая как значение элемента управления во время операции сохранения (запрос, инициированный нажатием кнопки ОК), обрабатывается. По умолчанию «Сохранение».

6

clickToEditText

Текстовая строка, которая появляется как подсказка элемента управления при наведении курсора мыши.

7

Highlightcolor

Цвет, применяемый к фону текстового элемента при наведении мыши. По умолчанию бледно-желтый.

8

Highlightendcolor

Цвет, до которого цвет подсветки исчезает как эффект.

Обратите внимание — в некоторых браузерах поддержка выглядит нечеткой.

9

Коллекция

Массив элементов, которые должны использоваться для заполнения опций элемента select.

10

loadTextUrl

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

11

externalControl

Элемент, который должен служить «внешним контролем», который запускает перевод редактора в активный режим. Это полезно, если вы хотите, чтобы другая кнопка или другой элемент запускали редактирование элемента управления.

12

ajaxOptions

Объект хеша, который будет передан базовому объекту Ajax Prototype для использования в качестве хеша его параметров.

OK для подтверждения

Логическое значение, указывающее, должна ли отображаться кнопка «ОК» или нет. По умолчанию true.

okText

Текст для размещения на кнопку ОК. По умолчанию «хорошо».

cancelLink

Логическое значение, указывающее, должна ли отображаться ссылка отмены. По умолчанию true.

cancelText

Текст ссылки отмены. По умолчанию «отмена».

savingText

Текстовая строка, отображаемая как значение элемента управления во время операции сохранения (запрос, инициированный нажатием кнопки ОК), обрабатывается. По умолчанию «Сохранение».

clickToEditText

Текстовая строка, которая появляется как подсказка элемента управления при наведении курсора мыши.

Highlightcolor

Цвет, применяемый к фону текстового элемента при наведении мыши. По умолчанию бледно-желтый.

Highlightendcolor

Цвет, до которого цвет подсветки исчезает как эффект.

Обратите внимание — в некоторых браузерах поддержка выглядит нечеткой.

Коллекция

Массив элементов, которые должны использоваться для заполнения опций элемента select.

loadTextUrl

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

externalControl

Элемент, который должен служить «внешним контролем», который запускает перевод редактора в активный режим. Это полезно, если вы хотите, чтобы другая кнопка или другой элемент запускали редактирование элемента управления.

ajaxOptions

Объект хеша, который будет передан базовому объекту Ajax Prototype для использования в качестве хеша его параметров.

Параметры обратного вызова

Кроме того, вы можете использовать любую из следующих функций обратного вызова в параметре options —

Sr.No Описание функции
1

OnComplete

Функция JavaScript, которая вызывается при успешном завершении запроса на сохранение. По умолчанию применяется эффект выделения для редактора.

2

OnFailure

Функция JavaScript, которая вызывается при сбое запроса на сохранение. По умолчанию выдается предупреждение с сообщением об ошибке.

OnComplete

Функция JavaScript, которая вызывается при успешном завершении запроса на сохранение. По умолчанию применяется эффект выделения для редактора.

OnFailure

Функция JavaScript, которая вызывается при сбое запроса на сохранение. По умолчанию выдается предупреждение с сообщением об ошибке.

CSS Styling и DOM id Опции

Вы также можете использовать одну из следующих опций для управления поведением редактора на месте:

Sr.No Вариант и описание
1

savingClassName

Имя класса CSS, примененное к элементу во время операции сохранения. Этот класс применяется при выполнении запроса к сохраняющему URL-адресу и удаляется при возврате ответа. Значением по умолчанию является «сохранение места редактора».

2

formClassName

Имя класса CSS применяется к форме, созданной, чтобы содержать элемент редактора. По умолчанию «inplaceeditor-form».

3

FormID

Идентификатор, примененный к форме, созданной для содержания элемента редактора.

savingClassName

Имя класса CSS, примененное к элементу во время операции сохранения. Этот класс применяется при выполнении запроса к сохраняющему URL-адресу и удаляется при возврате ответа. Значением по умолчанию является «сохранение места редактора».

formClassName

Имя класса CSS применяется к форме, созданной, чтобы содержать элемент редактора. По умолчанию «inplaceeditor-form».

FormID

Идентификатор, примененный к форме, созданной для содержания элемента редактора.

пример

Live Demo

<html>
   <head>
      <title>Simple Ajax Auto-completer Example</title>
		
      <script type = "text/javascript" src = "/javascript/prototype.js"></script>
      <script type = "text/javascript"  src = "/javascript/scriptaculous.js?load = effects,controls"></script>
      
      <script type = "text/javascript">
         window.onload = function() {
            new Ajax.InPlaceCollectionEditor(
               'theElement',
               '/script.aculo.us/transform.php',
               {
                  formId: 'whatever',
                  okText: 'Upper me!',
                  cancelText: 'Never mind',
                  collection: ['one','two','three','four','five']
               }
            );
         }
      </script>
   </head>
   
   <body>
      <p>Click over the "Click me!" text and then change text and click OK.</p>
      <p>Try this example with different options.</p>
		
      <div id = "theElement">
         Click me!
      </div>
   </body>
</html>

Вот содержимое скрипта transform.php.

<?php
   if( isset($_REQUEST["value"]) ) {
      $str = $_REQUEST["value"];
      $str = strtoupper($str);
      echo "$str";
   }
?>

Вот содержимое скрипта transform.php.

<?php
   if( isset($_REQUEST["value"]) ) {
      $str = $_REQUEST["value"];
      $str = strtoupper($str);
      echo "$str";
   }
?>

При отображении щелкните и выберите один из отображаемых параметров. Этот довольно тривиальный скрипт PHP преобразует значение параметра запроса с ключом «значение» в его заглавный эквивалент и записывает результат обратно в ответ.

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

Это даст следующий результат —