jquery - 将输入下拉列表添加和删除到grails表单

标签 jquery grails controller append gsp

经过很多时间的尝试。我决定发布一个问题。
这是我想做的:

  • 从表单中添加和删除下拉列表。
  • 从表单中删除所选的下拉列表。这意味着,如果用户已经进行了一些选择,则应该可以删除例如仅选中“选项2”的下拉菜单。

  • 到目前为止,基于Gregg对这个[question](Adding table rows from a Grails Template on Button Click)的回答,我有一个向该表单添加下拉菜单的表单。

    但是由于我做得不好...我只是在表格中添加了一个带有while标签的行。

    形式如下:
    <div class="container-fluid">
    <div class="row-fluid">
            <div class="span3" id="resources">
                <div class="control-group box" id="control-group">
                    <div class="controls" id="resource-grouper">
                        <g:render template="resource" model="[end:1]"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
    

    呈现的模板:每个下拉菜单均配有一个按钮,用于在表单中添加或删除自身。
    <%int i = 1 %>
    <g:while test="${i <= end}">
    <%i++%>
    <div class="input-prepend">
    <span class="add-on">
        <button class="btn btn-mini addResource" type="button" onclick="addResource();" >
            <i class="icon-plus-sign"></i>
        </button>
    </span> <span class="add-on">
        <button class="btn btn-mini" type="button">
            <i class="icon-minus-sign"></i>
        </button>
    </span>
    <g:select name="resources" from="${org.pmo.sari.Resource.list()}" optionKey="id" size="1" value="${projectInstance?.resources*.id}" class="span10" />
    </div>
    </g:while>
    

    javascript(到目前为止,仅用于添加):
    function addResource(){
    
        var end = document.getElementById('end').value;
    
        $.get("/SARI/project/addResource", {end: end} ,function(html) {
    
            $('#control-group').append(html);
        });
    }
    

    Controller 功能
    def addResource(){
        int max = params.end.toInteger()
        max = max + 1
        render(template: "resource", model: ['end': max])
    }
    

    如果有人对这个问题有解决方案或评论,那将非常有帮助。

    最佳答案

    一段时间之后...在JQuery的帮助下我完成了它。我发布代码是为了以防它对任何人有用...
    效果很好...尽管我认为我不应该像我那样使用按钮的ID。欢迎提出建议。

           $('button.resources').on('click',function(){
                var clickedButton = $(this),
                        resourceContainer = clickedButton.parent('div'),
                        selectCounter = $('select.resources').size();
    
                if(clickedButton.attr('id')=='add'){
    
                    var selector = clickedButton.siblings('select'),
                            newSelectContainer = resourceContainer.clone(true);
    
                    newSelectContainer.find('select').val(selector.val());
                    resourceContainer.after(newSelectContainer);
                    selectCounter = selectCounter + 1;
    
                    if(selectCounter > 1){
                        $('button.resources#remove').removeAttr('disabled');
                    }
                }
    
                if(clickedButton.attr('id')=='remove'){
                    if (selectCounter > 1){
                        resourceContainer.remove();
                        selectCounter = selectCounter - 1;
                        if(selectCounter == 1){
                            $('button.resources#remove').attr('disabled','disabled');
                        }
    
                    }
                }
            });
    

    克隆并附加的片段:
    <div class="fieldcontain" id="resources-container">
    <label for="resources">
        <g:message code="project.resources.label" default="Resources" />
    </label>
    <button type="button" class="resources" id="add" >+</button>
    <button type="button" class="resources" id="remove">-</button>
    <g:select name="resources" class="resources" from="${someclass.list()}" optionKey="id" size="1" value="${someInstance?.resources*.id}"  />
    </div>
    

    结果允许在单击后添加下拉框,并保留选定的值。

    关于jquery - 将输入下拉列表添加和删除到grails表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15446253/

    相关文章:

    spring-mvc - 使用Spring MVC批注进行表单验证

    Grails 获取 Controller 参数

    javascript - 在 jQuery 中为 id 添加一个数字,以便在 jQuery/JavaScript 中使用

    javascript - 如何逐行获取html表格值并对值进行一些计算?

    javascript - 动画显示 div 在滚动位置上的位置

    javascript - 抓取最近的前一个 div 的内容

    sql - Grails查询以过滤关联并仅返回匹配的实体

    Grails 服务使用另一个服务的方法

    grails - 如何建立条件查询以获取我的域的数据

    java - restcontroller 和 application/x-www-form-urlencoded;charset=UTF-8 媒体类型的问题