`
jiang_grails
  • 浏览: 43263 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

grails中使用jqueryui的autocomplete

阅读更多

1.在前边的文章中介绍了应用jqueryUi的autocomplete,但是那是在grails的1.4版本中使用

的,现在工程任然使用的1.3.7版本,关于1.3.7使用jquery可以参考这篇文章Grails从1.4m1

版本回退到1.3.7。

 

2.当时只是实现了最基本的功能,可以实现自动显示匹配的问题,但是随着工程的进行,这里

边需要完成一些更为细微的功能,首先就是两个文本框,其中一个使用autocomplete,产生

自动联想,然后第二个文本框的值是根据第一个文本框的值来获得的,例如一个作者的名字有

中英文,我们在中文名的输入框中使用autocomplete,选择作者名,然后英文作者名会自动

显示。效果如下:

image

代码如下:

$( "#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.第二个功能就是当输入的值在数据库中没有的时候,程序会自动保存,并且提示用户,该作

者名已经被保存。效果如下:

image

这里用到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片段,

告诉客户端,然后客户端显示。

上边这些代码基本已经完成所需功能。

分享到:
评论

相关推荐

    Grails 和 jQuery开发实例

    在本文中,我们将深入探讨如何使用Groovy on Grails(简称Grails)和jQuery来构建一个功能丰富的Web日历应用程序。Grails是一个基于Java平台的全栈式框架,它简化了Web应用的开发过程,而jQuery则是一款强大的...

    Grails Jquery 集成代码

    要在Grails应用中使用JQuery,首先需要添加相应的依赖。在`grails-app/conf/BuildConfig.groovy`文件中,找到`dependencies`块,添加JQuery的库。例如,你可以使用CDN链接或者通过Bower或npm安装后将其作为本地资源...

    grails中文使用手册

    4. **Grails插件**:Grails生态系统中的插件极大地扩展了框架的功能,如Spring Security用于安全控制,GSP(Grails Server Pages)用于视图渲染,以及CouchDB或MongoDB插件实现NoSQL数据库的支持。 5. **...

    Grails中文参考手册

    Views 是 Grails 应用程序中的用户界面部分,通常使用 Groovy Server Pages (GSP) 文件编写。GSP 结合了 HTML、CSS 和 JavaScript 以及 Groovy 语法,允许动态生成页面内容。 **Services** Services 是可重用的...

    grails中文参考手册

    - **创建一个Grails应用**:使用`grails create-app`命令可以快速创建一个新的Grails应用,这将生成基本的项目结构。 - **Hello World示例**:在新创建的应用中,你可以通过创建一个简单的控制器和视图来实现经典...

    grails-pjax:Grails Pjax插件云可帮助您在Grails中使用pjax

    Pjax是一个jQuery插件,它使用ajax和pushState通过真正的永久链接,页面标题和后退按钮提供快速浏览体验。 查看更多或访问 ##为什么要用Pjax? 只是使用ajax从远程加载容器? 是的,但不仅如此。 不再加载css和js...

    grails-shiro-ui:Grails Shiro UI 插件

    5. 开发者API:插件提供了丰富的API供开发者在控制器和视图中使用,如检查用户权限、强制登录等。 三、Grails Shiro UI 插件的进阶应用 除了基本的功能外,Grails Shiro UI 插件还支持一些高级特性,如: 1. 国际...

    grails使用freemarker.rar

    标题中的“grails使用freemarker.rar”表明这是一个关于如何在Grails框架中应用FreeMarker模板引擎的资源包。FreeMarker是一个开源的、基于Java的模板引擎,它用于生成动态HTML或其他格式的文本,比如XML、PDF等。...

    grails中文入门简介

    它还包含了Groovy Server Pages(GSP),这是一种基于Groovy的模板引擎,它允许开发者在页面中使用Groovy脚本。GSP标签库丰富,涵盖了数据绑定、表单处理、页面布局等多个方面。Grails的URL映射系统使得可以灵活地将...

    grails 使用ajax的例子

    本教程将深入探讨如何在Grails应用中使用Ajax,通过几个实际的例子来帮助理解其工作原理和常见用法。 1. **Ajax简介** Ajax(Asynchronous JavaScript and XML)的核心是JavaScript异步通信,它允许网页在不重新...

    grails 中文文档+grails-fckeditor-0.9.5.zip插件

    2. MVC架构:Grails遵循Model-View-Controller(MVC)设计模式,通过GORM(Grails Object Relational Mapping)进行数据访问,使用GSP(Groovy Server Pages)作为视图模板,Controller负责业务逻辑处理。...

    grails中文API

    Grails中文API的出现,为国内开发者提供了更友好的文档支持,使得理解与使用Grails框架变得更加方便。本文将深入解析Grails中文API中的关键概念和技术点。 1. **Grails框架概述** Grails是基于Spring框架构建的,...

    Grails1.1中文文档

    《Grails 1.1 中文文档》是一个非常宝贵的资源,尤其对于国内的开发者来说,由于Grails在中文社区中的资料相对较少,这份文档的价值不言而喻。Grails是一个基于Groovy语言的开源Web应用框架,它借鉴了Ruby on Rails...

    Eclipse下搭建Grails项目

    - 由于Grails项目涉及GSP(Groovy Server Pages)文件,推荐使用包含JSP编辑器的Eclipse JEE版本。如果你对JSP语法熟悉且内存有限,也可选择Classic版本。 - 安装Eclipse 3.4.0 JEE版本或其他支持JSP编辑的最新...

    grails ajax

    标题"grails ajax"表明我们将探讨如何在Grails应用中有效地使用Ajax技术。Ajax允许后台与服务器进行异步数据交换,而无需重新加载整个网页。这在动态数据展示、表单提交、实时更新等场景中特别有用。 在Grails中,...

    Grails使用FCK Editor(附源码,有截图)

    本文将详细介绍如何在Grails应用中使用FCK Editor,同时附带源码和操作截图,以帮助开发者快速理解和实现这一功能。 ### 1. 安装与引入FCK Editor 首先,我们需要下载FCK Editor的源码包,并将其解压到Grails项目...

    grails中的上传,下载

    5. **返回文件路径**:最后,返回文件在服务器上的相对路径,以便在前端展示或后续处理中使用。 #### GSP页面实现 - **上传按钮**:在GSP页面上添加上传按钮,触发弹出窗口进行文件选择和上传。 - **使用JavaScript...

    grails 中文第二版

    - 使用`grails create-app`命令快速创建一个新的Grails项目。 - 自动生成项目的基本结构,包括目录结构和必要的配置文件。 **Hello World示例** - 创建一个简单的控制器,实现基本的路由逻辑。 - 在视图中展示...

    Grails1.1中文文档(CHM)

    Grails1.1最新 中文 文档 当今的Java Web开发技术显得过于复杂,相对于它本身的需要来说。现在主流的Java Web框架也是异常复杂,而且没有很好的遵循 Don't Repeat Yourself (DRY) 法则。 因此我们要以一种新的思维...

Global site tag (gtag.js) - Google Analytics