2017年5月23日 星期二

Bootstrap-TokenField 標籤輸入

最近讓使用者上資料的時候,需要上類似標籤的資料。但礙於時間不足,無法自己刻,還好需求不是很複雜,於是找到了符合需求的元件,就是Bootstrap-TokenField。

由於是基於Bootstrap為基底開發出來的插件,所以風格也很有Bootstrap的味道。它能夠利用ajax結合遠端資料,實現自動完成(auto complete)並以標籤化(token field)的方式呈現。

使用環境:

Apache: 2.4.23
JQuery版本:1.10.2
Bootstrap版本:3.3.7
Bootstrap-TokenField版本:0.12.10.12.1版本可點此下載

效果圖:



使用方式:

1.首先須在HTML頁面引入入Bootstrap-Tokenfield的js、css檔案

<link rel="stylesheet" href=YOUR PATH/css/bootstrap-tokenfield.min.css">
<link rel="stylesheet" href=YOUR PATH/css/tokenfield-typeahead.min.css">
<script src="YOUR PATH/js/bootstrap-tokenfield.min.js"></script>


2.加入HTML物件 <input>

<input type="text" id="tokenfield" class="form-control"/>


3.初始化插件

<script type="text/javascript">

    $('#tokenfield').tokenfield({
        autocomplete: {
            source: 'YOUR_DATA_PATH', //資料URL,格式在第四步驟
            delay: 100
        },
        showAutocompleteOnFocus: true,
        limit: 5
    }).on('tokenfield:createtoken', function (e) {
        alert("生成token時觸發");
        //return false;  //如果在此return false,將不會產生token
    });

</script>

4.伺服器端須提供以下JSON資料格式(YOUR_DATA_PATH)

[
    {
        label: "【投資贏長】有夢最美 可多注意貨櫃海運轉機效應-豐沃投資理財學苑董事長 鄭培敏",
        value: "134"
    },  ......可能有多筆
]

參數說明

JSON欄位名稱
型態
數值
描述
autocomplete
Object
[]
Query UI Autocomplete(自動完成)選項
autocomplete.source
String
YOUR_DATA_PATH
自動完成提示字元來源URL(JSON)
autocomplete.delay
Number
100
提示字元出現延遲時間(ms)
showAutocompleteOnFocus
Boolean
true
是否將焦點設置於自動完成選單上
limit
Number
5
Tag的數量上限


遇到問題

若有特殊的效果可能要自己實作,例如不讓使用者選擇重複的資料

使用心得

此插件雖功能較少,不過再使用上來說較為方便,且簡單易懂。若需求不是太為複雜,可以用此插件去達到想要的效果。後續會再和大家介紹可以達到相同效果,但功能更為豐富的元件

參考文件

Getting Started、API、Demo Site





2017年5月15日 星期一

TinyMCE-網頁文字編輯器

最近在撰寫公司網頁時,需要讓使用者輸入一些有HTML效果的資料,於是找到了這款插件。此編輯器擁有所見及所得的效果,當使用者一編輯內容,馬上就可以看見編輯的成果。此編輯器為Open Source開源軟體,開發者也可自行以此開發功能,且官方提供了許多外掛插件,有非常高的擴充性。

使用後覺得不錯,所以想將此記錄下來,以便下次應用,以下是使用此插件的紀錄。


使用環境:

Apache: 2.4.23
TinyMCE版本:4.4.3,4.4.3版本可點此下載


效果圖:




使用方式:


1.首先須在HTML頁面引入TinyMCE的JS檔案,在這裡使用官網提供的CDN

<script src='//cloud.tinymce.com/stable/tinymce.min.js'></script>

也可以下載至本機端引用,下載網址:點此


2.加入HTML物件 <textarea>

<textarea id="tinymce"></textarea>


3.初始化插件

<script type="text/javascript">
   tinymce.init({
       selector:'#tinymce',
       theme: 'modern',
       language_url : '語言檔路徑/zh_TW.js',
       height: 300,
       target_list : false,
       content_css : "自訂CSS檔案路徑/tinymceStyle.css",
       plugins: [
           'link media charmap hr',
           'visualchars visualblocks preview fullscreen',
           'spellchecker code',
           'textcolor fullscreen',
           'wordcount'
       ],
       menu: {
           file: {title: 'File', items: 'newdocument'},
           edit: {title: 'Edit', items: 'undo redo | cut copy paste pastetext | selectall | searchreplace'},
           insert: {title: 'Insert', items: 'link media | charmap hr'},
           view: {title: 'View', items: 'visualchars visualblocks visualaid | preview fullscreen'},
           format: {title: 'Format', items: 'bold italic strikethrough superscript subscript | removeformat'},
           tools: {title: 'Tools', items: 'code'}
       },
       toolbar: 'link media preview | example insertfile undo redo | styleselect outdent indent | bullist numlist | fullscreen | forecolor',
       textcolor_map: [
           "000000", "Black",
           "999999", "Mediun Gray",
           "FF9900", "Amber"
       ],
       style_formats: [{
           title: 'Inline', items: [
               {title: 'Bold', icon: 'bold', format: 'bold'},
               {title: 'Italic', icon: 'italic', format: 'italic'},
               {title: 'Strikethrough', icon: 'strikethrough', format: 'strikethrough'},
               {title: 'Superscript', icon: 'superscript', format: 'superscript'},
               {title: 'Subscript', icon: 'subscript', format: 'subscript'}
            ]
        }, {
           title: 'Blocks', items: [
               {title: 'Paragraph', format: 'p'},
               {title: 'Blockquote', format: 'blockquote'}
        ]
}]
   });

</script>

參數說明

JSON欄位名稱
型態
數值
描述
selector
String
#tinymce
欲初始化的HTML ID
theme
String
modern
編輯器主題風格
language_url
String
語言檔路徑/zh_TW.js
語言的檔案路徑,預設英文,可改成中文
height
Number
300
高度
target_list
Boolean
false
關閉"選擇超連結開啟方式"功能
content_css
String
自訂CSS檔案路徑/tinymceStyle.css
自訂義編輯器CSS,此為CSS檔案路徑。
plugins
Array

引入插件模組,有點類似Java的import,需先在此宣告後,才能在下方menu、toolbar使用
menu
Object

設定菜單。EX:元件圖示中的檔案、編輯、插入....等,需先在plugins中宣告,否則無效
toolbar
String

設定工具列。EX:菜單下的工具圖示,有點類似快捷鍵,需先在plugins中宣告,否則無效
textcolor_map
Array

若有開啟"設定文字顏色",此選項可設定讓使用者能使用那些顏色
style_formats
Object

若開啟"設定文字格式",此選項可設定讓使用者能使用那些格式


常用的API與功能

<script type="text/javascript">

//設定內容
tinymce.get("news_content").setContent(newsJSON.news_content);

//取得內容
tinymce.get("news_content").getContent();

</script>

遇到問題

1.TinyMCE設定參數中的width與height似乎不支援以百分比%的格式,若要使用%需自行透過選取器並撰寫CSS才可設定,EX:#news_content{ width:100%; }

使用心得

功能豐富,提供了許多API與Callback可以過濾、處理、輸出內容。也有很多預設的菜單、工具列...等模組可供使用,且幾乎每一個模組(菜單、工具列...等)的細節都能修改、設定, 但設定較為複雜,需要慢慢調校。

更多設定可參考官網文件,付在下面的參考文件中。

參考文件