/* Paging Listbox v1.0
Date: 2009-07-12
Project: http://code.google.com/p/paging-listbox/
Copyright 2009 [Mike @ moretechtips.net]
Licensed under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with the License.
You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*/
(function($){
$.fn.DynamicListbox = function(allOptions) {
var defaults = {
text_id: 'item_search_text'
,button_id: 'item_submit'
,list_id: 'item_results'
,target_status: 'active'
,source:''
,vars:null
,debug:false
,uri_key: 'key'
,agent_id: ''
};
allOptions = $.extend({}, defaults, allOptions);
return this.each(function() {
var lastKey= '';
var startup= true;
//override passed options by element embedded options if any
var op = allOptions;
// AJAX call
var load= function(key) {
if(key==null || key=='undefined') key='';
sel = $('#' + op.list_id);
sel.html('');
// TODO: syntax to use variable in object construction
if ( 'rs_user_search' == op.uri_key )
var data = { 'rs_user_search': key, 'rs_agent_id' : op.agent_id, 'rs_target_status' : op.target_status };
else
var data = { 'rs_group_search': key, 'rs_agent_id' : op.agent_id, 'rs_target_status' : op.target_status };
$('#' + op.list_id + ' option').each(function(i, option){ $(option).remove(); });
$.ajax({url:op.source,type:"GET",data:data,dataType:"html",success:loaded,error:loadError});
}
// AJAX is loaded
var loaded = function(data,txtStatus) {
//Set Inner html with response of Ajax request
sel = $('#' + op.list_id);
sel.html(data);
}
// Error on AJAX
var loadError = function(XMLHttpRequest, textStatus, errorThrown) {
if(!op.debug) return;
sel = $('#' + op.list_id);
sel.html('');
}
var submit_search = function() {
search_text = $('#' + op.text_id );
load(search_text.val());
}
// on keydown handler
var keydown = function(e) {
// this will catch pressing enter and call find function
var intKey = e.keyCode;
if(intKey==13) {
submit_search();
//Stop propagation to prevent container form submission
return false;
}
}
//init
var init= function() {
// bind onkeydown handler for 'Key' input
$('#' + op.text_id).bind('keydown',null,keydown);
$("#" + op.button_id).click(function() {
submit_search();
});
}
init();
});
}
})(jQuery);
.