【发布时间】:2014-07-11 10:04:04
【问题描述】:
所以,我有一个域类,它有很多字段。我在 GSP 中准备了五个下拉菜单,并且数据正在正确过滤任何下拉菜单的 onChange,但存在一个问题。对于在下拉列表中选择的几组组合,我们在数据库中没有数据,这些组合也不是固定的。
所以,我在想是否有可能一旦在第一个下拉菜单(或任何下拉菜单)上进行选择,其余的下拉菜单会根据第一个选择(意思是其他下拉列表仅填充那些数据在数据库中可用的值),这也应遵循后续选择。
另外,我看到了依赖下拉列表的示例,但我看到的所有示例都有多个下拉列表,但每个下拉列表都从不同的域类获取值
是否甚至可以仅使用一个域类来做到这一点?
这就是我的 index.gsp 的样子:
<html>
<head>
<g:javascript src="jquery-1.10.2.js"/>
<g:javascript src="prototype.js"/>
</head>
<body>
<form>
<g:select from="['DESKTOP/LAPTOP','SMARTPHONES','OTHERS','TABLETS']" name="device" id ="device"
onchange="${remoteFunction(
controller:'Pgtyp',
action:'ajaxGetMv',
// params:'\'mv=\' + escape(this.value)',
params:'\'device=\'+this.value+\'&mv=\'+$(\'mv\').value+\'&browser=\'+$(\'browser\').value+\'&pagetype=\'+$(\'pagetype\').value+\'&platform=\'+$(\'platform\').value' ,
onSuccess: 'printpgtyp(data)')}"
></g:select>
<g:select from="['CORESITE','MWEB']" name="platform" id ="platform"
onchange="${remoteFunction(
controller:'Pgtyp',
action:'ajaxGetMv',
// params:'\'mv=\' + escape(this.value)',
params:'\'platform=\'+this.value+\'&mv=\'+$(\'mv\').value+\'&browser=\'+$(\'browser\').value+\'&pagetype=\'+$(\'pagetype\').value' ,
onSuccess: 'printpgtyp(data)')}"
></g:select>
<g:select from="['CHECKOUT','HOMEPAGE','OTHERS', 'DEPARTMENT', 'PRODUCT','SEARCH', '(All)','SHELF']" name="pagetype" id ="pagetype"
onchange="${remoteFunction(
controller:'Pgtyp',
action:'ajaxGetMv',
// params:'\'mv=\' + escape(this.value)',
params:'\'pagetype=\'+this.value+\'&mv=\'+$(\'mv\').value+\'&browser=\'+$(\'browser\').value+\'&platform=\'+$(\'platform\').value' ,
onSuccess: 'printpgtyp(data)')}"
></g:select>
<g:select from="['INTERNET EXPLORER','GOGGLE CHROME','SAFARI', 'MOZILLA', 'OTHERS']" name="browser" id ="browser"
onchange="${remoteFunction(
controller:'Pgtyp',
action:'ajaxGetMv',
// params:'\'mv=\' + escape(this.value)',
params:'\'browser=\'+this.value+\'&mv=\'+$(\'mv\').value+\'&pagetype=\'+$(\'pagetype\').value+\'&platform=\'+$(\'platform\').value' ,
onSuccess: 'printpgtyp(data)')}"
></g:select>
<g:select from="['AFFILIATES', 'CSE','DISPLAYADS','EMAIL','MOBILEWEB','OTHERS','ORGANIC','SEO', 'SEM']" name="mv" id = "mv"
onchange="${remoteFunction(
controller:'Pgtyp',
action:'ajaxGetMv',
// params:'\'mv=\' + escape(this.value)',
params:'\'mv=\'+this.value+\'&browser=\'+$(\'browser\').value+\'&pagetype=\'+$(\'pagetype\').value+\'&platform=\'+$(\'platform\').value' ,
onSuccess: 'printpgtyp(data)')}"
></g:select>
</form>
<script>
function printpgtyp(data)
{
console.log(data)
}
</script>
</body>
</html>
【问题讨论】:
-
你看过 ajaxdependancyselection:github.com/vahidhedayati/ajaxdependancyselection 在底部查看最后一个示例 --- MyDepartments141 的搜索页面。如果您不想使用该插件,请查看 github.com/vahidhedayati/ajaxdependancyselection/blob/master/…,它有一个 javascript 函数,可在初始值更新时调用多个域
标签: javascript jquery grails drop-down-menu