从禁用的输入中删除数据

时间:2015-01-22 15:15:07

标签: grails

我有一个字段,我在html中禁用并通过ajax向控制器发送请求,该字段没有请求,但它仍然存在于bean中。

我如何设法从bean中自动删除它?

SimpleController

 def update(ConfiguracaoSistema configuracaoSistemaInstance) {
    if (configuracaoSistemaInstance == null) {
        notFound()
        return
    }

    if (configuracaoSistemaInstance.hasErrors()) {
        respond configuracaoSistemaInstance.errors, view: 'index'
        return
    }

    configuracaoSistemaInstance.save flush: true

    request.withFormat {
        form multipartForm {
            flash.message = message(code: 'default.updated.message', args: [message(code: 'configuracaoSistema.label', default: 'ConfiguracaoSistema'), ''])
            redirect action: "index"
        }
        '*' { respond configuracaoSistemaInstance, [status: OK] }
    }
}

在gsp中我有一个字段,我将用jquery

禁用
<g:textField name="enderecoServicosCatix" class="form-control input catix" disabled="${show}" value="${configuracaoSistemaInstance?.enderecoServicosCatix}"/>

我通过JQuery将其设置为禁用

$('.catix').each(function(){
            $(this).attr("disabled", true);
            $(this).prop('disabled', true);
        });

我向控制器发送请求,我希望保存的实例在我刚刚禁用的字段中获取'null',但它保留最后一个值。

1 个答案:

答案 0 :(得分:1)

这是一种方法。禁用该字段时恢复原始值。原始值可以存储为输入字段本身的数据属性,也可以存储在隐藏字段中。

将数据属性添加到input元素以存储原始值:

<g:textField name="enderecoServicosCatix" class="form-control input catix" disabled="${show}" data-originalvalue="${configuracaoSistemaInstance?.enderecoServicosCatix}" value="${configuracaoSistemaInstance?.enderecoServicosCatix}"/>

然后在禁用时恢复原始值:

$('.catix').each(function(){
    $(this).attr("disabled", true);
    $(this).prop('disabled', true);
    $(this).val($(this).attr('data-originalvalue'));
});

(我还没有测试过。)


另一种方法是创建一个新参数并将其传递给控制器​​,该参数将指示它在绑定从视图接收的数据时忽略所有“catix”输入。这个新参数将是一个隐藏字段,如下所示:

<g:hidden name="catix_disabled" value="false"/>