
- script.aculo.us 教程
- script.aculo.us - 首頁
- script.aculo.us - 概覽
- script.aculo.us - 模組
- script.aculo.us - 視覺效果
- script.aculo.us - 拖放
- script.aculo.us - 元素排序
- script.aculo.us - 建立滑塊
- script.aculo.us - 自動完成
- script.aculo.us - 原地編輯
- script.aculo.us 資源
- script.aculo.us - 快速指南
- script.aculo.us - 資源
- script.aculo.us - 討論
script.aculo.us - 原地編輯
原地編輯是 Web 2.0 風格應用程式的標誌之一。
原地編輯是指將不可編輯的內容(例如 <p>、<h1> 或 <div>)轉換為可編輯內容,使用者只需單擊即可編輯其內容。
這將靜態元素轉換為可編輯區域(單行或多行),並彈出提交和取消按鈕(或連結,具體取決於您的選項),供使用者確認或回滾修改。
然後,它透過 Ajax 將編輯內容同步到伺服器端,並將元素再次設為不可編輯狀態。
要使用 script.aculo.us 的原地編輯功能,您需要載入 controls.js 和 effects.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 的建構函式接受三個引數:
目標元素可以是元素本身的引用,也可以是目標元素的 ID。
Ajax.InPlaceEditor 的第二個引數指定完成編輯值時聯絡的伺服器端指令碼的 URL。
通常的選項雜湊。
選項
在建立 Ajax.InPlaceEditor 物件時,您可以使用以下一個或多個選項。
序號 | 選項和描述 |
---|---|
1 |
okButton 一個布林值,指示是否顯示“確定”按鈕。預設為 true。 |
2 |
okText 要放置在確定按鈕上的文字。預設為“確定”。 |
3 |
cancelLink 一個布林值,指示是否顯示取消連結。預設為 true。 |
4 |
cancelText 取消連結的文字。預設為“取消”。 |
5 |
savingText 在儲存操作(單擊“確定”按鈕發起的請求)處理期間顯示為控制元件值的文字字串。預設為“正在儲存”。 |
6 | clickToEditText 滑鼠懸停時顯示為控制元件“工具提示”的文字字串。 |
7 |
rows 編輯控制元件處於活動狀態時顯示的行數。任何大於 1 的數字都會導致使用文字區域元素而不是文字欄位元素。預設為 1。 |
8 |
cols 處於活動模式時的列數。如果省略,則不施加列限制。 |
9 |
size 與 cols 相同,但僅在 rows 為 1 時適用。 |
10 |
highlightcolor 滑鼠懸停時應用於文字元素背景的顏色。預設為淺黃色。 |
11 |
highlightendcolor 高亮顏色作為效果淡入的顏色。 注意 - 在某些瀏覽器中,支援似乎參差不齊。 |
12 |
loadingText 在載入操作期間出現在控制元件內的文字。預設為“載入中”。 |
13 |
loadTextURL 指定要聯絡的伺服器端資源的 URL,以便在編輯器進入活動模式時載入編輯器的初始值。預設情況下,不會執行後端載入操作,初始值是目標元素的文字。 |
14 |
externalControl 用作“外部控制元件”的元素,用於觸發將編輯器置於活動模式。如果您希望另一個按鈕或其他元素觸發編輯控制元件,這將很有用。 |
15 |
ajaxOptions 將傳遞給底層 Prototype Ajax 物件以用作其選項雜湊的雜湊物件。 |
回撥選項
此外,您可以在 options 引數中使用以下任何回撥函式
序號 | 函式和描述 |
---|---|
1 |
onComplete 在成功完成儲存請求後呼叫的 JavaScript 函式。預設情況下,會對編輯器應用高亮效果。 |
2 |
onFailure 在儲存請求失敗時呼叫的 JavaScript 函式。預設情況下,會發出一個顯示失敗訊息的警報。 |
3 |
callback 在提交儲存請求之前呼叫的 JavaScript 函式,以便獲取要傳送到請求的查詢字串。預設函式返回一個查詢字串,將查詢引數“value”與文字控制元件中的值等同。 |
CSS 樣式和 DOM ID 選項
您還可以使用以下一個選項來控制原地編輯器的行為:
序號 | 選項和描述 |
---|---|
1 |
savingClassName 在儲存操作進行期間應用於元素的 CSS 類名。在向儲存 URL 發出請求時應用此類,並在返回響應時將其刪除。預設值為“inplaceeditor-saving”。 |
2 |
formClassName 應用於建立以包含編輯器元素的表單的 CSS 類名。預設為“inplaceeditor-form”。 |
3 |
formId 應用於建立以包含編輯器元素的表單的 ID。 |
示例
<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 的建構函式接受三個引數
目標元素可以是元素本身的引用,也可以是目標元素的 ID
Ajax.InPlaceEditor 的第二個引數指定完成編輯值時聯絡的伺服器端指令碼的 URL。
通常的選項雜湊。
選項
除了新增 collection 選項外,原地集合編輯器的選項列表是繼承自原地文字編輯器的選項的子集。
序號 | 選項和描述 |
---|---|
1 |
okButton 一個布林值,指示是否顯示“確定”按鈕。預設為 true。 |
2 |
okText 要放置在確定按鈕上的文字。預設為“確定”。 |
3 |
cancelLink 一個布林值,指示是否顯示取消連結。預設為 true。 |
4 |
cancelText 取消連結的文字。預設為“取消”。 |
5 |
savingText 在儲存操作(單擊“確定”按鈕發起的請求)處理期間顯示為控制元件值的文字字串。預設為“正在儲存”。 |
6 |
clickToEditText 滑鼠懸停時顯示為控制元件“工具提示”的文字字串。 |
7 |
Highlightcolor 滑鼠懸停時應用於文字元素背景的顏色。預設為淺黃色。 |
8 |
Highlightendcolor 高亮顏色作為效果淡入的顏色。 注意 - 在某些瀏覽器中,支援似乎參差不齊。 |
9 |
Collection 要用於填充選擇元素選項的專案陣列。 |
10 |
loadTextUrl 指定要聯絡的伺服器端資源的 URL,以便在編輯器進入活動模式時載入編輯器的初始值。預設情況下,不會執行後端載入操作,初始值是目標元素的文字。為了使此選項有意義,它必須返回 collection 選項中提供的專案之一,以將其設定為選擇元素的初始值。 |
11 |
externalControl 用作“外部控制元件”的元素,用於觸發將編輯器置於活動模式。如果您希望另一個按鈕或其他元素觸發編輯控制元件,這將很有用。 |
12 |
ajaxOptions 將傳遞給底層 Prototype Ajax 物件以用作其選項雜湊的雜湊物件。 |
回撥選項
此外,您可以在 options 引數中使用以下任何回撥函式:
序號 | 函式和描述 |
---|---|
1 |
onComplete 在成功完成儲存請求後呼叫的 JavaScript 函式。預設情況下,會對編輯器應用高亮效果。 |
2 |
onFailure 在儲存請求失敗時呼叫的 JavaScript 函式。預設情況下,會發出一個顯示失敗訊息的警報。 |
CSS 樣式和 DOM ID 選項
您還可以使用以下一個選項來控制原地編輯器的行為:
序號 | 選項和描述 |
---|---|
1 |
savingClassName 在儲存操作進行期間應用於元素的 CSS 類名。在向儲存 URL 發出請求時應用此類,並在返回響應時將其刪除。預設值為“inplaceeditor-saving”。 |
2 |
formClassName 應用於建立以包含編輯器元素的表單的 CSS 類名。預設為“inplaceeditor-form”。 |
3 |
formId 應用於建立以包含編輯器元素的表單的 ID。 |
示例
<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 指令碼將查詢引數(鍵為“value”)的值轉換為其大寫等效項,並將結果寫回響應。
使用我們的線上編譯器,更好地理解上面表格中討論的不同選項的程式碼。
這將產生以下結果: