- 浏览: 533823 次
- 性别:
- 来自: 青岛
-
文章分类
- 全部博客 (222)
- 帖子来的 (3)
- JavaScript (25)
- Java (10)
- DataBase (2)
- el表达式 (1)
- html (4)
- FCKEDITOR和TINYMCE (3)
- tomcat (5)
- JavaEE (12)
- Eclipse (7)
- Windows (3)
- Dos命令 (1)
- Oracle (20)
- 乱搞 (1)
- AHK (3)
- TC (2)
- vim (12)
- Perl (13)
- ANT (6)
- Android (3)
- antlr (1)
- SSH (14)
- C/C++ (3)
- wordpress (4)
- CSS (3)
- java2D (1)
- Lucene (4)
- Linux (9)
- jquery (4)
- testsomething (7)
- JVM监控优化 (3)
- emacs (4)
- svn cvs版本控制 (2)
- 硬件 (1)
- j2me (2)
- maven (5)
- WebService (4)
- aspectJ (1)
- 算法 (2)
- mysql (1)
- project (2)
- 正则表达式 (2)
- firefox (1)
最新评论
-
直觉:
gua 顶
com.opensymphony.xwork2.inject.DependencyException -
fordfelix:
加了以后 任然存在这个异常 求解!!
struts2 json 插件 @JSON(serialize = false) -
fangyan_oracle:
谢谢了, 很受用
用IE修改当前页面内容的代码zzzz -
cfying:
[flash=200,200][/flash][url][/u ...
精解window.setTimeout()使用方式与参数传递问题!(转) -
qinglangee:
tiewazi 写道param必须是全局变量(即window对 ...
精解window.setTimeout()使用方式与参数传递问题!(转)
根据 jquery自动完成(ajax)在126行(他原先说199行,可能是版本不一样?)加了
.bind("input", function() {
// @hack by liqt:support for inputing chinese characters in firefox
onChange(0, true);
});
调用:
$(document).ready(function() {
$("#keyword").autocomplete(serv_url);
});
暂时注释掉,在IE里显示不正常
float=right 的内容要写在前面
A jQuery autocompleter
.bind("input", function() {
// @hack by liqt:support for inputing chinese characters in firefox
onChange(0, true);
});
调用:
$(document).ready(function() {
$("#keyword").autocomplete(serv_url);
});
暂时注释掉,在IE里显示不正常
if ($.browser.msie) { // we put a styled iframe behind the calendar so HTML SELECT elements don't show through //$results.append(document.createElement('iframe')); }
float=right 的内容要写在前面
<li><span style="float:right">def</span>abc</li>
A jQuery autocompleter
/* * jQuery Autocomplete plugin * * Copyright (c) 2009 Dylan Verheul * */ jQuery.autocomplete = function(input, options) { // Create a link to self var me = this; // Create jQuery object for input element var $input = $(input).attr("autocomplete", "off"); // Apply inputClass if necessary if (options.inputClass) { $input.addClass(options.inputClass); } // Create results var results = document.createElement("div"); // Create jQuery object for results // var $results = $(results); var $results = $(results).hide().addClass(options.resultsClass).css("position", "absolute"); if( options.width > 0 ) { $results.css("width", options.width); } // Add to body element $("body").append(results); input.autocompleter = me; var timeout = null; var prev = ""; var active = -1; var cache = {}; var keyb = false; var hasFocus = false; var lastKeyPressCode = null; var mouseDownOnSelect = false; var hidingResults = false; // flush cache function flushCache(){ cache = {}; cache.data = {}; cache.length = 0; }; // flush cache flushCache(); // if there is a data array supplied if( options.data != null ){ var sFirstChar = "", stMatchSets = {}, row = []; // no url was specified, we need to adjust the cache length to make sure it fits the local data store if( typeof options.url != "string" ) { options.cacheLength = 1; } // loop through the array and create a lookup structure for( var i=0; i < options.data.length; i++ ){ // if row is a string, make an array otherwise just reference the array row = ((typeof options.data[i] == "string") ? [options.data[i]] : options.data[i]); // if the length is zero, don't add to list if( row[0].length > 0 ){ // get the first character sFirstChar = row[0].substring(0, 1).toLowerCase(); // if no lookup array for this character exists, look it up now if( !stMatchSets[sFirstChar] ) stMatchSets[sFirstChar] = []; // if the match is a string stMatchSets[sFirstChar].push(row); } } // add the data items to the cache for( var k in stMatchSets ) { // increase the cache size options.cacheLength++; // add to the cache addToCache(k, stMatchSets[k]); } } $input .keydown(function(e) { // track last key pressed lastKeyPressCode = e.keyCode; switch(e.keyCode) { case 38: // up e.preventDefault(); moveSelect(-1); break; case 40: // down e.preventDefault(); moveSelect(1); break; case 9: // tab case 13: // return if( selectCurrent() ){ // make sure to blur off the current field $input.get(0).blur(); e.preventDefault(); } break; default: active = -1; if (timeout) clearTimeout(timeout); timeout = setTimeout(function(){onChange();}, options.delay); break; } }) .focus(function(){ // track whether the field has focus, we shouldn't process any results if the field no longer has focus hasFocus = true; }) .blur(function() { // track whether the field has focus hasFocus = false; if (!mouseDownOnSelect) { hideResults(); } }).bind("input",function() { // @hack by liqt:support for inputing chinese characters in firefox onChange(0, true); }); hideResultsNow(); function onChange() { // ignore if the following keys are pressed: [del] [shift] [capslock] if( lastKeyPressCode == 46 || (lastKeyPressCode > 8 && lastKeyPressCode < 32) ) return $results.hide(); var v = $input.val(); if (v == prev) return; prev = v; if (v.length >= options.minChars) { $input.addClass(options.loadingClass); requestData(v); } else { $input.removeClass(options.loadingClass); $results.hide(); } }; function moveSelect(step) { var lis = $("li", results); if (!lis) return; active += step; if (active < 0) { active = 0; } else if (active >= lis.size()) { active = lis.size() - 1; } lis.removeClass("ac_over"); $(lis[active]).addClass("ac_over"); // Weird behaviour in IE // if (lis[active] && lis[active].scrollIntoView) { // lis[active].scrollIntoView(false); // } }; function selectCurrent() { var li = $("li.ac_over", results)[0]; if (!li) { var $li = $("li", results); if (options.selectOnly) { if ($li.length == 1) li = $li[0]; } else if (options.selectFirst) { li = $li[0]; } } if (li) { selectItem(li); return true; } else { return false; } }; function selectItem(li) { if (!li) { li = document.createElement("li"); li.extra = []; li.selectValue = ""; } var v = $.trim(li.selectValue ? li.selectValue : li.innerHTML); input.lastSelected = v; prev = v; $results.html(""); $input.val(v); hideResultsNow(); if (options.onItemSelect) { setTimeout(function() { options.onItemSelect(li) }, 1); } }; // selects a portion of the input string function createSelection(start, end){ // get a reference to the input element var field = $input.get(0); if( field.createTextRange ){ var selRange = field.createTextRange(); selRange.collapse(true); selRange.moveStart("character", start); selRange.moveEnd("character", end); selRange.select(); } else if( field.setSelectionRange ){ field.setSelectionRange(start, end); } else { if( field.selectionStart ){ field.selectionStart = start; field.selectionEnd = end; } } field.focus(); }; // fills in the input box w/the first match (assumed to be the best match) function autoFill(sValue){ // if the last user key pressed was backspace, don't autofill if( lastKeyPressCode != 8 ){ // fill in the value (keep the case the user has typed) $input.val($input.val() + sValue.substring(prev.length)); // select the portion of the value not typed by the user (so the next character will erase) createSelection(prev.length, sValue.length); } }; function showResults() { // get the position of the input field right now (in case the DOM is shifted) var pos = findPos(input); // either use the specified width, or autocalculate based on form element var iWidth = (options.width > 0) ? options.width : $input.width(); // reposition $results.css({ width: parseInt(iWidth) + "px", top: (pos.y + input.offsetHeight) + "px", left: pos.x + "px" }).show(); }; function hideResults() { if (timeout) clearTimeout(timeout); timeout = setTimeout(hideResultsNow, 200); }; function hideResultsNow() { if (hidingResults) { return; } hidingResults = true; if (timeout) { clearTimeout(timeout); } var v = $input.removeClass(options.loadingClass).val(); if ($results.is(":visible")) { $results.hide(); } if (options.mustMatch) { if (!input.lastSelected || input.lastSelected != v) { selectItem(null); } } hidingResults = false; }; function receiveData(q, data) { if (data) { $input.removeClass(options.loadingClass); results.innerHTML = ""; // if the field no longer has focus or if there are no matches, do not display the drop down if( !hasFocus || data.length == 0 ) return hideResultsNow(); if ($.browser.msie) { // we put a styled iframe behind the calendar so HTML SELECT elements don't show through $results.append(document.createElement('iframe')); } results.appendChild(dataToDom(data)); // autofill in the complete box w/the first match as long as the user hasn't entered in more data if( options.autoFill && ($input.val().toLowerCase() == q.toLowerCase()) ) autoFill(data[0][0]); showResults(); } else { hideResultsNow(); } }; function parseData(data) { if (!data) return null; var parsed = []; var rows = data.split(options.lineSeparator); for (var i=0; i < rows.length; i++) { var row = $.trim(rows[i]); if (row) { parsed[parsed.length] = row.split(options.cellSeparator); } } return parsed; }; function dataToDom(data) { var ul = document.createElement("ul"); var num = data.length; // limited results to a max number if( (options.maxItemsToShow > 0) && (options.maxItemsToShow < num) ) num = options.maxItemsToShow; for (var i=0; i < num; i++) { var row = data[i]; if (!row) continue; var li = document.createElement("li"); if (options.formatItem) { li.innerHTML = options.formatItem(row, i, num); li.selectValue = row[0]; } else { li.innerHTML = row[0]; li.selectValue = row[0]; } var extra = null; if (row.length > 1) { extra = []; for (var j=1; j < row.length; j++) { extra[extra.length] = row[j]; } } li.extra = extra; ul.appendChild(li); $(li).hover( function() { $("li", ul).removeClass("ac_over"); $(this).addClass("ac_over"); active = $("li", ul).indexOf($(this).get(0)); }, function() { $(this).removeClass("ac_over"); } ).click(function(e) { e.preventDefault(); e.stopPropagation(); selectItem(this) }); } $(ul).mousedown(function() { mouseDownOnSelect = true; }).mouseup(function() { mouseDownOnSelect = false; }); return ul; }; function requestData(q) { if (!options.matchCase) q = q.toLowerCase(); var data = options.cacheLength ? loadFromCache(q) : null; // recieve the cached data if (data) { receiveData(q, data); // if an AJAX url has been supplied, try loading the data now } else if( (typeof options.url == "string") && (options.url.length > 0) ){ $.get(makeUrl(q), function(data) { data = parseData(data); addToCache(q, data); receiveData(q, data); }); // if there's been no data found, remove the loading class } else { $input.removeClass(options.loadingClass); } }; function makeUrl(q) { var sep = options.url.indexOf('?') == -1 ? '?' : '&'; var url = options.url + sep + "q=" + encodeURI(q); for (var i in options.extraParams) { url += "&" + i + "=" + encodeURI(options.extraParams[i]); } return url; }; function loadFromCache(q) { if (!q) return null; if (cache.data[q]) return cache.data[q]; if (options.matchSubset) { for (var i = q.length - 1; i >= options.minChars; i--) { var qs = q.substr(0, i); var c = cache.data[qs]; if (c) { var csub = []; for (var j = 0; j < c.length; j++) { var x = c[j]; var x0 = x[0]; if (matchSubset(x0, q)) { csub[csub.length] = x; } } return csub; } } } return null; }; function matchSubset(s, sub) { if (!options.matchCase) s = s.toLowerCase(); var i = s.indexOf(sub); if (i == -1) return false; return i == 0 || options.matchContains; }; this.flushCache = function() { flushCache(); }; this.setExtraParams = function(p) { options.extraParams = p; }; this.findValue = function(){ var q = $input.val(); if (!options.matchCase) q = q.toLowerCase(); var data = options.cacheLength ? loadFromCache(q) : null; if (data) { findValueCallback(q, data); } else if( (typeof options.url == "string") && (options.url.length > 0) ){ $.get(makeUrl(q), function(data) { data = parseData(data) addToCache(q, data); findValueCallback(q, data); }); } else { // no matches findValueCallback(q, null); } } function findValueCallback(q, data){ if (data) $input.removeClass(options.loadingClass); var num = (data) ? data.length : 0; var li = null; for (var i=0; i < num; i++) { var row = data[i]; if( row[0].toLowerCase() == q.toLowerCase() ){ li = document.createElement("li"); if (options.formatItem) { li.innerHTML = options.formatItem(row, i, num); li.selectValue = row[0]; } else { li.innerHTML = row[0]; li.selectValue = row[0]; } var extra = null; if( row.length > 1 ){ extra = []; for (var j=1; j < row.length; j++) { extra[extra.length] = row[j]; } } li.extra = extra; } } if( options.onFindValue ) setTimeout(function() { options.onFindValue(li) }, 1); } function addToCache(q, data) { if (!data || !q || !options.cacheLength) return; if (!cache.length || cache.length > options.cacheLength) { flushCache(); cache.length++; } else if (!cache[q]) { cache.length++; } cache.data[q] = data; }; function findPos(obj) { var curleft = obj.offsetLeft || 0; var curtop = obj.offsetTop || 0; while (obj = obj.offsetParent) { curleft += obj.offsetLeft curtop += obj.offsetTop } return {x:curleft,y:curtop}; } } jQuery.fn.autocomplete = function(url, options, data) { // Make sure options exists options = options || {}; // Set url as option options.url = url; // set some bulk local data options.data = ((typeof data == "object") && (data.constructor == Array)) ? data : null; // Set default values for required options options = $.extend({ inputClass: "ac_input", resultsClass: "ac_results", lineSeparator: "\n", cellSeparator: "|", minChars: 1, delay: 400, matchCase: 0, matchSubset: 1, matchContains: 0, cacheLength: 1, mustMatch: 0, extraParams: {}, loadingClass: "ac_loading", selectFirst: false, selectOnly: false, maxItemsToShow: -1, autoFill: false, width: 0 }, options); options.width = parseInt(options.width, 10); this.each(function() { var input = this; new jQuery.autocomplete(input, options); }); // Don't break the chain return this; } jQuery.fn.autocompleteArray = function(data, options) { return this.autocomplete(null, options, data); } jQuery.fn.indexOf = function(e){ for( var i=0; i<this.length; i++ ){ if( this[i] == e ) return i; } return -1; };
相关推荐
### jQuery Ajax 核心技术全解析 #### 一、引言 随着Web 2.0时代的到来,Ajax 技术因其能够实现网页的局部刷新、提高用户体验等特性而备受推崇。jQuery作为一款优秀的轻量级JavaScript库,极大地简化了Ajax的操作...
`dataType`参数告诉jQuery我们期望的返回类型是JSON,这样jQuery会自动将服务器返回的文本解析为JavaScript对象。 当请求成功且服务器返回正确的JSON数据时,`success`回调函数会被调用。在这里,我们可以访问到`...
jQuery是一个广泛应用于Web开发的JavaScript库,它极大地简化了HTML文档遍历、事件处理、动画制作以及Ajax交互。下面我们将深入探讨jQuery API中的关键知识点。 ### 1. **选择器(Selectors)** jQuery的选择器基于...
除此之外,jQuery 2.92还改进了Ajax处理,提供了一套完整的异步数据获取和交互方案。`.ajax()`, `.getJSON()`, `.get()`, `.post()`等方法让开发者可以轻松地与服务器进行通信,处理JSON、XML等多种数据格式。同时,...
在网页开发中,jQuery是一个非常流行的JavaScript库,它简化了DOM操作、事件处理、动画以及Ajax交互等任务。本教程将介绍如何使用jQuery实现省市区街道四级联动菜单,这是一种常见于地址选择或定位功能中的交互设计...
在IT领域,jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互。本文将深入探讨如何使用jQuery实现一个浏览器嗅探器特效,以揭示用户所使用的浏览器类型、内核版本号及设备基础...
6. **数据绑定**:如果下拉选项需要动态加载,可以使用Ajax请求获取数据,然后使用jQuery的`$.ajax()`方法,将返回的数据绑定到自定义下拉框中。 7. **无障碍访问(Accessibility)**:确保自定义组件符合无障碍...
5. **前端框架和库**: 可能使用了React、Vue.js或Angular等前端框架,或者jQuery等JavaScript库,来提高开发效率和用户体验。 6. **AJAX和Fetch API**: JavaScript中用于异步获取数据的技术,使得页面可以在不刷新...
3. **交互与动态效果**:通过JavaScript,开发者可以为网页添加交互性和动态效果,比如按钮点击事件、动画、AJAX异步请求等。 4. **生态主题的内容呈现**:项目可能涉及到生态数据可视化、环保信息的展示,这可能...
4. **AJAX**:可能用于实现无刷新的文件上传,提供更好的用户体验。 5. **文件上传控件**:如HTML5的`<input type="file">`元素,或是第三方库如jQuery File Upload。 6. **文件验证**:服务端可能会对上传的文件...
`jQuery` 是一个广泛使用的JavaScript库,它提供了很多方便的API来简化DOM操作、事件处理以及Ajax交互。在本篇中,我们将深入探讨如何利用`jQuery`来检测用户的`userAgent`,以便确定他们是否正在使用移动设备。 `...
3. jQuery 与 MVC:jQuery 是一个JavaScript库,它简化了HTML文档遍历、事件处理、动画和Ajax交互,但不是MVC(Model-View-Controller)框架。MVC是一种软件设计模式,用于分离应用程序的数据、表现和控制逻辑。 4....
4. 可能还会有其他资源文件,如图片(`image`文件夹)、字体(`font`文件夹)或第三方库(如jQuery)。 这个项目对于初学者来说是一个很好的实战练习,它涵盖了前端开发的核心技术,同时也能帮助开发者了解实际项目...
- **JavaScript和jQuery**: 前端可能使用JavaScript和jQuery处理用户交互,如输入消息、发送消息和接收新消息的实时更新。 - **CSS样式和响应式设计**: 为了提供良好的用户体验,页面的布局和样式设计可能采用了CSS...
在开始实现图片上传功能前,需要确保项目环境已经搭建完成。这包括但不限于: - JDK版本确认(如JDK 8及以上); - 配置好Maven或Gradle构建工具; - 设置好Spring Boot版本,以利用其内置的Tomcat服务器快速启动...
这通常涉及使用jQuery或其他JavaScript库与后台的Ajax动作方法交互,实现在不刷新整个页面的情况下完成文件上传。 10. 错误处理: 在文件上传过程中,可能会遇到各种错误,如文件过大、文件类型不受支持等。因此,...
5. **AJAX与Fetch API**:掌握异步数据获取技术,了解XMLHttpRequest与Fetch API的区别和使用场景,理解跨域资源共享(CORS)策略。 6. **框架与库**:熟悉React、Vue、Angular等主流前端框架的原理和应用,包括...
此外,手册还可能涉及事件处理、异步编程(如回调函数、Promise和async/await)、AJAX(异步JavaScript和XML)用于与服务器通信,以及ES6(ECMAScript 2015)及后续版本引入的新特性,如模板字符串、箭头函数、类和...
手册将详细讲解JavaScript语法、DOM操作、AJAX(异步JavaScript和XML)、jQuery库以及ES6等新特性。 6. **其他相关技术**:手册可能还会涉及CSS(层叠样式表)用于网页样式控制,HTTP协议的理解,以及Web安全和性能...
通过JavaScript源码,你可以学习DOM操作、AJAX、jQuery库和其他前端框架的用法。 5. C++:作为C语言的扩展,C++支持面向对象编程,并且在系统编程、游戏开发、高性能计算等领域广泛应用。C++源码可以帮助你掌握内存...