Added the Autocomplete plugin
19
plugins/Autocomplete/Autocomplete.js
Normal file
@ -0,0 +1,19 @@
|
||||
$(document).ready(function(){
|
||||
$.getJSON($('address .url')[0].href+'/api/statuses/friends.json?user_id=' + current_user['id'] + '&lite=true&callback=?',
|
||||
function(friends){
|
||||
$('#notice_data-text').autocomplete(friends, {
|
||||
multiple: true,
|
||||
multipleSeparator: " ",
|
||||
formatItem: function(row, i, max){
|
||||
return '@' + row.screen_name + ' (' + row.name + ')';
|
||||
},
|
||||
formatMatch: function(row, i, max){
|
||||
return '@' + row.screen_name;
|
||||
},
|
||||
formatResult: function(row){
|
||||
return '@' + row.screen_name;
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
58
plugins/Autocomplete/AutocompletePlugin.php
Normal file
@ -0,0 +1,58 @@
|
||||
<?php
|
||||
/**
|
||||
* Laconica, the distributed open-source microblogging tool
|
||||
*
|
||||
* Plugin to enable nickname completion in the enter status box
|
||||
*
|
||||
* PHP version 5
|
||||
*
|
||||
* LICENCE: This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @category Plugin
|
||||
* @package Laconica
|
||||
* @author Craig Andrews <candrews@integralblue.com>
|
||||
* @copyright 2009 Craig Andrews http://candrews.integralblue.com
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://laconi.ca/
|
||||
*/
|
||||
|
||||
if (!defined('LACONICA')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
class AutocompletePlugin extends Plugin
|
||||
{
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
function onEndShowScripts($action){
|
||||
$js_string = <<<EOT
|
||||
<script type="text/javascript">
|
||||
var current_user = { screen_name: 'CANDREWS', id: '1' };
|
||||
</script>
|
||||
EOT;
|
||||
$action->raw($js_string);
|
||||
$action->script('plugins/Autocomplete/jquery-autocomplete/jquery.autocomplete.pack.js');
|
||||
$action->script('plugins/Autocomplete/Autocomplete.js');
|
||||
}
|
||||
|
||||
function onEndShowLaconicaStyles($action)
|
||||
{
|
||||
$action->cssLink('plugins/Autocomplete/jquery-autocomplete/jquery.autocomplete.css');
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
20
plugins/Autocomplete/jquery-autocomplete/changelog.txt
Normal file
@ -0,0 +1,20 @@
|
||||
1.0.2
|
||||
-----
|
||||
* Fixed missing semicolon
|
||||
|
||||
1.0.1
|
||||
-----
|
||||
* Fixed element creation (<ul> to <ul/> and <li> to </li>)
|
||||
* Fixed ac_even class (was ac_event)
|
||||
* Fixed bgiframe usage: now its really optional
|
||||
* Removed the blur-on-return workaround, added a less obtrusive one only for Opera
|
||||
* Fixed hold cursor keys: Opera needs keypress, everyone else keydown to scroll through result list when holding cursor key
|
||||
* Updated package to jQuery 1.2.5, removing dimensions
|
||||
* Fixed multiple-mustMatch: Remove only the last term when no match is found
|
||||
* Fixed multiple without mustMatch: Don't select the last active when no match is found (on tab/return)
|
||||
* Fixed multiple cursor position: Put cursor at end of input after selecting a value
|
||||
|
||||
1.0
|
||||
---
|
||||
|
||||
* First release.
|
BIN
plugins/Autocomplete/jquery-autocomplete/demo/bg.gif
Normal file
After Width: | Height: | Size: 1.1 KiB |
23
plugins/Autocomplete/jquery-autocomplete/demo/emails.php
Normal file
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
$q = strtolower($_GET["q"]);
|
||||
if (!$q) return;
|
||||
$items = array(
|
||||
"Peter Pan"=>"peter@pan.de",
|
||||
"Molly"=>"molly@yahoo.com",
|
||||
"Forneria Marconi"=>"live@japan.jp",
|
||||
"Master Sync"=>"205bw@samsung.com",
|
||||
"Dr. Tech de Log"=>"g15@logitech.com",
|
||||
"Don Corleone"=>"don@vegas.com",
|
||||
"Mc Chick"=>"info@donalds.org",
|
||||
"Donnie Darko"=>"dd@timeshift.info",
|
||||
"Quake The Net"=>"webmaster@quakenet.org",
|
||||
"Dr. Write"=>"write@writable.com"
|
||||
);
|
||||
|
||||
echo "[";
|
||||
foreach ($items as $key=>$value) {
|
||||
if (strpos(strtolower($key), $q) !== false) {
|
||||
echo "{ name: \"$key\", to: \"$value\" }, ";
|
||||
}
|
||||
}
|
||||
echo "]";
|
23
plugins/Autocomplete/jquery-autocomplete/demo/emails.phps
Normal file
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
$q = strtolower($_GET["q"]);
|
||||
if (!$q) return;
|
||||
$items = array(
|
||||
"Peter Pan"=>"peter@pan.de",
|
||||
"Molly"=>"molly@yahoo.com",
|
||||
"Forneria Marconi"=>"live@japan.jp",
|
||||
"Master Sync"=>"205bw@samsung.com",
|
||||
"Dr. Tech de Log"=>"g15@logitech.com",
|
||||
"Don Corleone"=>"don@vegas.com",
|
||||
"Mc Chick"=>"info@donalds.org",
|
||||
"Donnie Darko"=>"dd@timeshift.info",
|
||||
"Quake The Net"=>"webmaster@quakenet.org",
|
||||
"Dr. Write"=>"write@writable.com"
|
||||
);
|
||||
|
||||
echo "[";
|
||||
foreach ($items as $key=>$value) {
|
||||
if (strpos(strtolower($key), $q) !== false) {
|
||||
echo "{ name: \"$key\", to: \"$value\" }, ";
|
||||
}
|
||||
}
|
||||
echo "]";
|
9
plugins/Autocomplete/jquery-autocomplete/demo/images.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
$term = $_REQUEST['q'];
|
||||
$images = array_slice(scandir("images"), 2);
|
||||
foreach($images as $value) {
|
||||
if( strpos(strtolower($value), $term) === 0 ) {
|
||||
echo $value . "\n";
|
||||
}
|
||||
}
|
||||
?>
|
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 4.1 KiB |
BIN
plugins/Autocomplete/jquery-autocomplete/demo/images/Bled.jpg
Normal file
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 6.3 KiB |
BIN
plugins/Autocomplete/jquery-autocomplete/demo/images/Gent.jpg
Normal file
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 3.7 KiB |
BIN
plugins/Autocomplete/jquery-autocomplete/demo/images/Gnesen.jpg
Normal file
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 5.7 KiB |
BIN
plugins/Autocomplete/jquery-autocomplete/demo/images/LeMans.jpg
Normal file
After Width: | Height: | Size: 6.4 KiB |
BIN
plugins/Autocomplete/jquery-autocomplete/demo/images/Lednice.jpg
Normal file
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 2.3 KiB |
BIN
plugins/Autocomplete/jquery-autocomplete/demo/images/Lemmer.jpg
Normal file
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 6.3 KiB |
BIN
plugins/Autocomplete/jquery-autocomplete/demo/images/Leuven.jpg
Normal file
After Width: | Height: | Size: 6.7 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 4.4 KiB |
BIN
plugins/Autocomplete/jquery-autocomplete/demo/images/Lyon.jpg
Normal file
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 7.6 KiB |
BIN
plugins/Autocomplete/jquery-autocomplete/demo/images/Olomouc.jpg
Normal file
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 5.4 KiB |
BIN
plugins/Autocomplete/jquery-autocomplete/demo/images/Posen.jpg
Normal file
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 6.5 KiB |
272
plugins/Autocomplete/jquery-autocomplete/demo/index.html
Normal file
@ -0,0 +1,272 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<title>jQuery Autocomplete Plugin</title>
|
||||
<script type="text/javascript" src="../lib/jquery.js"></script>
|
||||
<script type='text/javascript' src='../lib/jquery.bgiframe.min.js'></script>
|
||||
<script type='text/javascript' src='../lib/jquery.ajaxQueue.js'></script>
|
||||
<script type='text/javascript' src='../lib/thickbox-compressed.js'></script>
|
||||
<script type='text/javascript' src='../jquery.autocomplete.js'></script>
|
||||
<script type='text/javascript' src='localdata.js'></script>
|
||||
<link rel="stylesheet" type="text/css" href="main.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../jquery.autocomplete.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../lib/thickbox.css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
$().ready(function() {
|
||||
|
||||
function findValueCallback(event, data, formatted) {
|
||||
$("<li>").html( !data ? "No match!" : "Selected: " + formatted).appendTo("#result");
|
||||
}
|
||||
|
||||
function formatItem(row) {
|
||||
return row[0] + " (<strong>id: " + row[1] + "</strong>)";
|
||||
}
|
||||
function formatResult(row) {
|
||||
return row[0].replace(/(<.+?>)/gi, '');
|
||||
}
|
||||
|
||||
$("#suggest1").autocomplete(cities);
|
||||
$("#month").autocomplete(months, {
|
||||
minChars: 0,
|
||||
max: 12,
|
||||
autoFill: true,
|
||||
mustMatch: true,
|
||||
matchContains: false,
|
||||
scrollHeight: 220,
|
||||
formatItem: function(data, i, total) {
|
||||
// don't show the current month in the list of values (for whatever reason)
|
||||
if ( data[0] == months[new Date().getMonth()] )
|
||||
return false;
|
||||
return data[0];
|
||||
}
|
||||
});
|
||||
$("#suggest13").autocomplete(emails, {
|
||||
minChars: 0,
|
||||
width: 310,
|
||||
matchContains: true,
|
||||
autoFill: false,
|
||||
formatItem: function(row, i, max) {
|
||||
return i + "/" + max + ": \"" + row.name + "\" [" + row.to + "]";
|
||||
},
|
||||
formatMatch: function(row, i, max) {
|
||||
return row.name + " " + row.to;
|
||||
},
|
||||
formatResult: function(row) {
|
||||
return row.to;
|
||||
}
|
||||
});
|
||||
$("#singleBirdRemote").autocomplete("search.php", {
|
||||
width: 260,
|
||||
selectFirst: false
|
||||
});
|
||||
$("#suggest14").autocomplete(cities, {
|
||||
matchContains: true,
|
||||
minChars: 0
|
||||
});
|
||||
$("#suggest3").autocomplete(cities, {
|
||||
multiple: true,
|
||||
mustMatch: true,
|
||||
autoFill: true
|
||||
});
|
||||
$("#suggest4").autocomplete('search.php', {
|
||||
width: 300,
|
||||
multiple: true,
|
||||
matchContains: true,
|
||||
formatItem: formatItem,
|
||||
formatResult: formatResult
|
||||
});
|
||||
$("#imageSearch").autocomplete("images.php", {
|
||||
width: 320,
|
||||
max: 4,
|
||||
highlight: false,
|
||||
scroll: true,
|
||||
scrollHeight: 300,
|
||||
formatItem: function(data, i, n, value) {
|
||||
return "<img src='images/" + value + "'/> " + value.split(".")[0];
|
||||
},
|
||||
formatResult: function(data, value) {
|
||||
return value.split(".")[0];
|
||||
}
|
||||
});
|
||||
$("#tags").autocomplete(["c++", "java", "php", "coldfusion", "javascript", "asp"], {
|
||||
width: 320,
|
||||
max: 4,
|
||||
highlight: false,
|
||||
multiple: true,
|
||||
multipleSeparator: " ",
|
||||
scroll: true,
|
||||
scrollHeight: 300
|
||||
});
|
||||
|
||||
|
||||
$(":text, textarea").result(findValueCallback).next().click(function() {
|
||||
$(this).prev().search();
|
||||
});
|
||||
$("#singleBirdRemote").result(function(event, data, formatted) {
|
||||
if (data)
|
||||
$(this).parent().next().find("input").val(data[1]);
|
||||
});
|
||||
$("#suggest4").result(function(event, data, formatted) {
|
||||
var hidden = $(this).parent().next().find(">:input");
|
||||
hidden.val( (hidden.val() ? hidden.val() + ";" : hidden.val()) + data[1]);
|
||||
});
|
||||
$("#suggest15").autocomplete(cities, { scroll: true } );
|
||||
$("#scrollChange").click(changeScrollHeight);
|
||||
|
||||
$("#thickboxEmail").autocomplete(emails, {
|
||||
minChars: 0,
|
||||
width: 310,
|
||||
matchContains: true,
|
||||
highlightItem: false,
|
||||
formatItem: function(row, i, max, term) {
|
||||
return row.name.replace(new RegExp("(" + term + ")", "gi"), "<strong>$1</strong>") + "<br><span style='font-size: 80%;'>Email: <" + row.to + "></span>";
|
||||
},
|
||||
formatResult: function(row) {
|
||||
return row.to;
|
||||
}
|
||||
});
|
||||
|
||||
$("#clear").click(function() {
|
||||
$(":input").unautocomplete();
|
||||
});
|
||||
});
|
||||
|
||||
function changeOptions(){
|
||||
var max = parseInt(window.prompt('Please type number of items to display:', jQuery.Autocompleter.defaults.max));
|
||||
if (max > 0) {
|
||||
$("#suggest1").setOptions({
|
||||
max: max
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function changeScrollHeight() {
|
||||
var h = parseInt(window.prompt('Please type new scroll height (number in pixels):', jQuery.Autocompleter.defaults.scrollHeight));
|
||||
if(h > 0) {
|
||||
$("#suggest1").setOptions({
|
||||
scrollHeight: h
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function changeToMonths(){
|
||||
$("#suggest1")
|
||||
// clear existing data
|
||||
.val("")
|
||||
// change the local data to months
|
||||
.setOptions({data: months})
|
||||
// get the label tag
|
||||
.prev()
|
||||
// update the label tag
|
||||
.text("Month (local):");
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1 id="banner"><a href="http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/">jQuery Autocomplete Plugin</a> Demo</h1>
|
||||
|
||||
<div id="content">
|
||||
|
||||
<form autocomplete="off">
|
||||
<p>
|
||||
<label>Single City (local):</label>
|
||||
<input type="text" id="suggest1" />
|
||||
<input type="button" value="Get Value" />
|
||||
<input type="button" value="Change Max Items" onclick="changeOptions();" />
|
||||
<input type="button" value="Change to Month Data" onclick="changeToMonths();" />
|
||||
<input type="button" value="Change scroll height" id="scrollChange" />
|
||||
</p>
|
||||
<p>
|
||||
<label>Month (local):</label>
|
||||
<input type="text" id="month" />
|
||||
<input type="button" value="Get Value" />
|
||||
(Current month is excluded from list)
|
||||
</p>
|
||||
<p>
|
||||
<label>E-Mail (local):</label>
|
||||
<input type="text" id="suggest13" />
|
||||
<input type="button" value="Get Value" />
|
||||
</p>
|
||||
<p>
|
||||
<label>Single Bird (remote):</label>
|
||||
<input type="text" id="singleBirdRemote" />
|
||||
<input type="button" value="Get Value" />
|
||||
</p>
|
||||
<p>
|
||||
<label>Hidden input</label>
|
||||
<input />
|
||||
</p>
|
||||
<p>
|
||||
<label>Single City (contains):</label>
|
||||
<input type="text" id="suggest14" />
|
||||
<input type="button" value="Get Value" />
|
||||
</p>
|
||||
<p>
|
||||
<label>Multiple Cities (local):</label>
|
||||
<textarea id='suggest3' cols='40' rows='3'></textarea>
|
||||
<input type="button" value="Get Value" />
|
||||
</p>
|
||||
<p>
|
||||
<label>Multiple Birds (remote):</label>
|
||||
<textarea id='suggest4'></textarea>
|
||||
<input type="button" value="Get Value" />
|
||||
</p>
|
||||
<p>
|
||||
<label>Hidden input</label>
|
||||
<textarea></textarea>
|
||||
</p>
|
||||
<p>
|
||||
<label>Image search (remote):</label>
|
||||
<input type="text" id='imageSearch' />
|
||||
<input type="button" value="Get Value" />
|
||||
</p>
|
||||
<p>
|
||||
<label>Tags (local):</label>
|
||||
<input type="text" id='tags' />
|
||||
<input type="button" value="Get Value" />
|
||||
</p>
|
||||
<p>
|
||||
<label>Some dropdown (<3 IE):</label>
|
||||
<select>
|
||||
<option value="">Item 12334455</option>
|
||||
<option value="2">Item 2</option>
|
||||
<option value="3">Item 3</option>
|
||||
<option value="4">Item 4</option>
|
||||
</select>
|
||||
</p>
|
||||
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
|
||||
<p>
|
||||
<a href="#TB_inline?height=155&width=400&inlineId=modalWindow" class="thickbox">Click here for an autocomplete inside a thickbox window.</a> (this should work even if it is beyond the fold)
|
||||
</p>
|
||||
|
||||
<div id="modalWindow" style="display: none;">
|
||||
<p>
|
||||
<label>E-Mail (local):</label>
|
||||
<input type="text" id="thickboxEmail" />
|
||||
<input type="button" value="Get Value" />
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<button id="clear">Remove all autocompletes</button>
|
||||
|
||||
<a href="search.phps">PHP script used to for remote autocomplete</a>
|
||||
|
||||
<h3>Result:</h3> <ol id="result"></ol>
|
||||
|
||||
</div>
|
||||
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
_uacct = "UA-2623402-1";
|
||||
urchinTracker();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
BIN
plugins/Autocomplete/jquery-autocomplete/demo/indicator.gif
Normal file
After Width: | Height: | Size: 1.5 KiB |
68
plugins/Autocomplete/jquery-autocomplete/demo/json.html
Normal file
@ -0,0 +1,68 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<title>jQuery Autocomplete Plugin</title>
|
||||
<script type="text/javascript" src="../lib/jquery.js"></script>
|
||||
<script type='text/javascript' src='../lib/jquery.bgiframe.min.js'></script>
|
||||
<script type='text/javascript' src='../lib/jquery.ajaxQueue.js'></script>
|
||||
<script type='text/javascript' src='../lib/thickbox-compressed.js'></script>
|
||||
<script type='text/javascript' src='../jquery.autocomplete.js'></script>
|
||||
<script type='text/javascript' src='localdata.js'></script>
|
||||
<link rel="stylesheet" type="text/css" href="main.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../jquery.autocomplete.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../lib/thickbox.css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
function format(mail) {
|
||||
return mail.name + " <" + mail.to + ">";
|
||||
}
|
||||
$("#email").autocomplete('emails.php', {
|
||||
multiple: true,
|
||||
parse: function(data) {
|
||||
return $.map(eval(data), function(row) {
|
||||
return {
|
||||
data: row,
|
||||
value: row.name,
|
||||
result: row.name + " <" + row.to + ">"
|
||||
}
|
||||
});
|
||||
},
|
||||
formatItem: function(item) {
|
||||
return format(item);
|
||||
}
|
||||
}).result(function(e, item) {
|
||||
$("#content").append("<p>selected " + format(item) + "</p>");
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1 id="banner"><a href="http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/">jQuery Autocomplete Plugin</a> Demo</h1>
|
||||
|
||||
<div id="content">
|
||||
|
||||
<form autocomplete="off">
|
||||
<p>
|
||||
<label>E-Mail (remote json):</label>
|
||||
<textarea cols="120" id="email"></textarea>
|
||||
</p>
|
||||
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
|
||||
<a href="emails.phps">Server-side script creating the JSON data</a>
|
||||
|
||||
</div>
|
||||
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
_uacct = "UA-2623402-1";
|
||||
urchinTracker();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|