golang Beego框架之HTML表单中的select标签组件的处理

简介:

   用Beego来进行web开发,对每个页面都可创建一个YourController类型,并匿名包含beego.Controller来达到继承beego.Controller的效果。以YourController为receiver重写beego.Controller的Get,Post等方法。当网页请求为Get/Post,则执行该页面YourController的Get()/Post()方法。

   在对应页面的Controller的Get()方法中,往数据Data写入category的实例切片cates:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func( this  *YourController)Get() {
         this .TplNames =  "yourPage.html"
     cates := []*category{
         &category{ "-1" true "请选择" },
         &category{ "golang" false "golang" },
         &category{ "Java" false "Java" },
         &category{ "C/C++" false "C/C++" },
     }
                                                                                                                                                                                                                                                                                                                                                                                                                                                               
     this .Data[ "Cates" ] = cates
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                              
type category struct {
     Id         string
     IsSelected bool
     Value      string
}


   对应的HTML模板中:

1
2
3
4
5
6
< select  class = "form-control input-sm"  name = "category"  id = "category"  style = "width: 120px;" >
     `range `.`Cates`
     < option  value=``.`Id` `if `.`IsSelected`  select = "selected" `end`>``.`Value`</ option >
                                                                                                                                                                                                                                                                                                                                                                                                                                                      
     `end`
</ select >

   HTML中用`range `.`Cates`来遍历golang传来的Data(此处.Cates传来的是Get方法中的Data["Cates"]),而``.`Id`,``.`IsSelected`,``.`Valuse`分别为golang中的类型category的三个字段。当Method为Get,页面渲染如下截图:

wKiom1L42gvhIkOTAACGMPlNuOM236.jpg


   在上图中,点击“提交”按钮,客户端向服务器发送Post请求,让我们看下该页面的Post表单:

wKiom1L429zwn2LyAAKL5RMPCn8587.jpg

   我们看到,form表单中,select组件设置id,name为“category”,当用户点击了“提交”,向服务器发送Post请求提交该表单,Beego中该页面Controller的Post()方法可通过this.input().Get("category")来过得select中category的value值,这些值就是被选中option的value值:

1
2
3
4
5
6
7
8
func ( this  *YourController) Post() {
     this .TplNames =  "yourPage.html"
     this .Ctx.Request.ParseForm()
     category :=  this .Input().Get( "category" )
     fmt.Println( "caterogy value:" , category)
     this .Redirect( "/category" 301 )
     return
}


   选择golang,点击“提交”,后台输出:

wKioL1L43iLTJuOOAACtbjMrad4237.jpg


   注意,select默认值是最上面的请选择,故再击提交按钮时要通过html页面内javascript函数 check();"来判断select是否做出正确选择,check()为一个hmtl嵌套的js脚本函数:

1
2
3
4
5
6
7
8
function  check() {
     if  ( '-1'  == $( '#category' ).val()) { //select的value值为-1
         alert( "请选择文章创作类型" );
         $( '#category' ).focus();
         return  false ;
     }
     return  true ;
}










本文转自 ponpon_ 51CTO博客,原文链接:http://blog.51cto.com/liuxp0827/1357863,如需转载请自行联系原作者
目录
相关文章
|
13天前
|
程序员 Go
Golang深入浅出之-Select语句在Go并发编程中的应用
【4月更文挑战第23天】Go语言中的`select`语句是并发编程的关键,用于协调多个通道的读写。它会阻塞直到某个通道操作可行,执行对应的代码块。常见问题包括忘记初始化通道、死锁和忽视`default`分支。要解决这些问题,需确保通道初始化、避免死锁并添加`default`分支以处理无数据可用的情况。理解并妥善处理这些问题能帮助编写更高效、健壮的并发程序。结合使用`context.Context`和定时器等工具,可提升`select`的灵活性和可控性。
25 2
|
20天前
HTML_表单标签
HTML_表单标签
16 0
|
1天前
|
JavaScript 搜索推荐 UED
一种将 Vue 组件渲染为 HTML 字符串的技术
Vue 的服务器端渲染(SSR)技术在服务器上将组件渲染为 HTML,提升首屏加载速度和 SEO。优点包括更快的用户体验、更好的搜索引擎优化及减轻客户端负担。然而,SSR也带来服务器压力增大、开发复杂性和额外的构建配置需求。vue-server-renderer 包支持 Vue SSR,但是否采用取决于项目需求和资源。
9 1
|
7天前
|
存储 前端开发 JavaScript
【Web 前端】如何找到所有 HTML select 标签的选中项?
【5月更文挑战第2天】【Web 前端】如何找到所有 HTML select 标签的选中项?
|
9天前
|
编解码 移动开发 前端开发
【专栏:HTML与CSS移动端开发篇】使用Viewport Meta标签优化移动端显示
【4月更文挑战第30天】本文介绍了HTML的Viewport Meta标签在移动端网页优化中的作用。Viewport Meta标签定义了视口属性,如宽度、高度、初始缩放等,解决移动设备因屏幕尺寸差异导致的显示问题。主要属性包括width(常用device-width)、initial-scale、maximum-scale、minimum-scale和user-scalable。
|
9天前
|
前端开发 JavaScript 开发者
【专栏:HTML与CSS实践篇】CSS框架(Bootstrap/Foundation)快速上手
【4月更文挑战第30天】Bootstrap和Foundation是两种流行的CSS框架,用于构建响应式网页。它们包含预定义的样式、栅格系统和组件,加速开发流程。Bootstrap以其12列栅格系统闻名,而Foundation提供更定制化和模块化选项。了解并熟练运用这些框架的基本概念和组件,结合最佳实践和性能优化,能帮助开发者高效创建符合现代设计趋势的网页项目。
|
9天前
|
移动开发 JavaScript 前端开发
【专栏:HTML进阶篇】HTML模板与Web组件:可复用的网页元素
【4月更文挑战第30天】HTML模板和Web组件提升网页开发效率和可维护性。HTML模板,如&lt;template&gt;元素和服务器端模板引擎,用于创建可复用的HTML结构。Web组件是自定义的HTML元素,结合影子DOM和模板,实现封装的可重用组件。两者助力构建高效、现代的网页和网站。
|
9天前
|
移动开发 前端开发 开发者
【专栏:HTML进阶篇】网页结构与语义化标签进阶
【4月更文挑战第30天】提升网页结构清晰度和无障碍访问性,有利于SEO。这些标签为屏幕阅读器提供额外上下文,简化CSS样式设计,避免无意义的&lt;div&gt;和&lt;span&gt;。正确使用语义化标签是现代网页开发的关键,能创造更优质、易访问和优化的Web体验。
|
12天前
|
前端开发 数据安全/隐私保护
Day-1 HTML基本标签和CSS常用样式
Day-1 HTML基本标签和CSS常用样式
|
13天前
|
前端开发 JavaScript 搜索推荐
react-app框架——使用monaco editor实现online编辑html代码编辑器
react-app框架——使用monaco editor实现online编辑html代码编辑器
29 3