1.在前边的文章中介绍了应用jqueryUi的autocomplete,但是那是在grails的1.4版本中使用
的,现在工程任然使用的1.3.7版本,关于1.3.7使用jquery可以参考这篇文章Grails从1.4m1
版本回退到1.3.7。
2.当时只是实现了最基本的功能,可以实现自动显示匹配的问题,但是随着工程的进行,这里
边需要完成一些更为细微的功能,首先就是两个文本框,其中一个使用autocomplete,产生
自动联想,然后第二个文本框的值是根据第一个文本框的值来获得的,例如一个作者的名字有
中英文,我们在中文名的输入框中使用autocomplete,选择作者名,然后英文作者名会自动
显示。效果如下:
代码如下:
$( "#cAuthor" ).autocomplete({
source:
function(request,response){
$.ajax({
type: "POST",
url:"../author/niuCh/?keywords="+
encodeURIComponent($( "#cAuthor" ).val()),
dataType:"json",
data:request,
success: function( data )
{
response($.map(data.author, function( item )
{ return
{
label:item.name,//下拉框上显示的值
value:
item.name,//最后显示在文本框中的值
ename :item.eName,//为下边使用
}
}));
}
}
);
},
focus: function( event, ui )
{
if(ui.item.ename){
$("#eAuthor").val(ui.item.ename);
}
},
});
上边就是实现autocomplete的代码,红色的字体实现关联,focus这个属性可以参考
jqueryUIautocomplete的官方文档,http://jqueryui.com/demos/autocomplete/
当焦点在下拉框时,会自动为后面一个文本框赋值,这里我将第一个文本框的id定义为
cAuthor,第二个文本框的ID定义为eAuthor。
但是在测试中发现了一些问题,刚开始使用的firefox和chrome这两个浏览器,并且没用加encodeURIComponent,没发现问题,但是用IE测试时,却出现了问题,不能进行联想。
先是在客户端利用alert()输出文本框的值,显示正常,然后我又在后台打印传入的参数,发现
了问题,传入的参数是乱码,然后我就上网查了下,发现这个问题还挺常见,试了一些方法,
最后发现加上encodeURIComponent,程序可以正常运行了。
3.第二个功能就是当输入的值在数据库中没有的时候,程序会自动保存,并且提示用户,该作
者名已经被保存。效果如下:
这里用到ajax,先看下代码:
客户端:
<script>
$("#cAuthor").focusout(function(){
if($("#cAuthor").val()){
$.ajax({
type:
"POST",
contentType: "application/x-www-form-urlencoded;
charset=utf-8" ,
url:"../author/niuEn/?keywords="+encodeURIComponent($("#cAuthor").val()),
success:function(data){
if(data){
$("#re").empty();
$("#eAuthor").val("");
$("#re").append("<div class='addAuthor'>"+data+"</div>");
}else{
$("#re").empty();
}
}
});
}
});
</script>
<label for="cAuthor">作者</label>
<g:textField
name="cAuthor" id="cAuthor"
value="${bookInstance?.cAuthor}" />
<div id="re"
align="left"></div>
后台代码如下:
def niuEn = {
def keywords = params.keywords
def author = Author.findByCName(keywords)
if(author){
render{
}
}else{
def newAuthor = new Author()
newAuthor.cName = keywords
newAuthor.eName =
keywords
newAuthor.save(flush:true)
render
{
div(id:"myDiv", "此作者不存在,已为你添加")
}
}
}
css文件
.addAuthor{
font-size: 0.8em;
line-height: 2;
width:150px;
background: #fff3f3;
border: 1px solid
#ffaaaa;
color: #cc0000;
}
当焦点离开这个文本框的时候,会触发这个事件,给后台传递当前文本框中的值,然后后台判
断这个值在数据库中是否存在,如果存在,什么也不返回,如果不存在则返回一个html片段,
告诉客户端,然后客户端显示。
上边这些代码基本已经完成所需功能。
分享到:
相关推荐
在本文中,我们将深入探讨如何使用Groovy on Grails(简称Grails)和jQuery来构建一个功能丰富的Web日历应用程序。Grails是一个基于Java平台的全栈式框架,它简化了Web应用的开发过程,而jQuery则是一款强大的...
要在Grails应用中使用JQuery,首先需要添加相应的依赖。在`grails-app/conf/BuildConfig.groovy`文件中,找到`dependencies`块,添加JQuery的库。例如,你可以使用CDN链接或者通过Bower或npm安装后将其作为本地资源...
4. **Grails插件**:Grails生态系统中的插件极大地扩展了框架的功能,如Spring Security用于安全控制,GSP(Grails Server Pages)用于视图渲染,以及CouchDB或MongoDB插件实现NoSQL数据库的支持。 5. **...
Views 是 Grails 应用程序中的用户界面部分,通常使用 Groovy Server Pages (GSP) 文件编写。GSP 结合了 HTML、CSS 和 JavaScript 以及 Groovy 语法,允许动态生成页面内容。 **Services** Services 是可重用的...
- **创建一个Grails应用**:使用`grails create-app`命令可以快速创建一个新的Grails应用,这将生成基本的项目结构。 - **Hello World示例**:在新创建的应用中,你可以通过创建一个简单的控制器和视图来实现经典...
Pjax是一个jQuery插件,它使用ajax和pushState通过真正的永久链接,页面标题和后退按钮提供快速浏览体验。 查看更多或访问 ##为什么要用Pjax? 只是使用ajax从远程加载容器? 是的,但不仅如此。 不再加载css和js...
5. 开发者API:插件提供了丰富的API供开发者在控制器和视图中使用,如检查用户权限、强制登录等。 三、Grails Shiro UI 插件的进阶应用 除了基本的功能外,Grails Shiro UI 插件还支持一些高级特性,如: 1. 国际...
标题中的“grails使用freemarker.rar”表明这是一个关于如何在Grails框架中应用FreeMarker模板引擎的资源包。FreeMarker是一个开源的、基于Java的模板引擎,它用于生成动态HTML或其他格式的文本,比如XML、PDF等。...
它还包含了Groovy Server Pages(GSP),这是一种基于Groovy的模板引擎,它允许开发者在页面中使用Groovy脚本。GSP标签库丰富,涵盖了数据绑定、表单处理、页面布局等多个方面。Grails的URL映射系统使得可以灵活地将...
本教程将深入探讨如何在Grails应用中使用Ajax,通过几个实际的例子来帮助理解其工作原理和常见用法。 1. **Ajax简介** Ajax(Asynchronous JavaScript and XML)的核心是JavaScript异步通信,它允许网页在不重新...
2. MVC架构:Grails遵循Model-View-Controller(MVC)设计模式,通过GORM(Grails Object Relational Mapping)进行数据访问,使用GSP(Groovy Server Pages)作为视图模板,Controller负责业务逻辑处理。...
Grails中文API的出现,为国内开发者提供了更友好的文档支持,使得理解与使用Grails框架变得更加方便。本文将深入解析Grails中文API中的关键概念和技术点。 1. **Grails框架概述** Grails是基于Spring框架构建的,...
《Grails 1.1 中文文档》是一个非常宝贵的资源,尤其对于国内的开发者来说,由于Grails在中文社区中的资料相对较少,这份文档的价值不言而喻。Grails是一个基于Groovy语言的开源Web应用框架,它借鉴了Ruby on Rails...
- 由于Grails项目涉及GSP(Groovy Server Pages)文件,推荐使用包含JSP编辑器的Eclipse JEE版本。如果你对JSP语法熟悉且内存有限,也可选择Classic版本。 - 安装Eclipse 3.4.0 JEE版本或其他支持JSP编辑的最新...
标题"grails ajax"表明我们将探讨如何在Grails应用中有效地使用Ajax技术。Ajax允许后台与服务器进行异步数据交换,而无需重新加载整个网页。这在动态数据展示、表单提交、实时更新等场景中特别有用。 在Grails中,...
本文将详细介绍如何在Grails应用中使用FCK Editor,同时附带源码和操作截图,以帮助开发者快速理解和实现这一功能。 ### 1. 安装与引入FCK Editor 首先,我们需要下载FCK Editor的源码包,并将其解压到Grails项目...
5. **返回文件路径**:最后,返回文件在服务器上的相对路径,以便在前端展示或后续处理中使用。 #### GSP页面实现 - **上传按钮**:在GSP页面上添加上传按钮,触发弹出窗口进行文件选择和上传。 - **使用JavaScript...
- 使用`grails create-app`命令快速创建一个新的Grails项目。 - 自动生成项目的基本结构,包括目录结构和必要的配置文件。 **Hello World示例** - 创建一个简单的控制器,实现基本的路由逻辑。 - 在视图中展示...
Grails1.1最新 中文 文档 当今的Java Web开发技术显得过于复杂,相对于它本身的需要来说。现在主流的Java Web框架也是异常复杂,而且没有很好的遵循 Don't Repeat Yourself (DRY) 法则。 因此我们要以一种新的思维...