Grails:如何创建一个g:textfield来加载一些数据并将其显示在其他g:textfield中?

时间:2010-09-24 21:37:41

标签: grails textfield

我有两个g:textfields 在第一个我应该写一个数字,比如12,在它旁边的g:textfield中,它应该加载12号的预定名称。

第一个名为'shipper',另一个名为'shipperName' 每当我在'shipper'txtfield中编写代码12时,它应该在'shipperName'框中返回托运人的名称。

提前致谢!

示例:

http://i56.tinypic.com/2wfn19z.jpg

如果我写了数字12,它应该返回USPS

http://i53.tinypic.com/2i90mc.jpg

每个号码都应该有不同的'shipperName'

再次感谢!

2 个答案:

答案 0 :(得分:2)

如果您使用jQuery,这很容易。查看事件处理程序(当用户离开数字框时,“模糊”是您想要的那个)。

例如:

$("#shipper").blur(function() { 
    $("#shipperName").load(
        "${createLink(controller: 'shipper', action: 'resolveShipper')}?id=" +
        $("#shipper").val()
    );
});

结尾的$(this).val()是用户刚刚离开的输入字段的值。

“ShipperController.resolveShipper”操作看起来像这样:

def resolveShipper = {
    render text: Shipper.get(params.id).name, contentType: "text/plain"
}

您可能还想做其他事情,例如在用户输入时自动填写shipperName字段而不会离开编辑字段,可能是在延迟之后。然而,事件处理程序保持不变,只是事件正在改变(从“模糊”到“更改”或类似的东西)

答案 1 :(得分:2)

要关联两个字符串,最简单的方法是使用一个对象来创建一个字典/地图,如下所示;

$('#input1').bind('keyup',function() {
     var map = {
         "1":"One",
         "2":"Fish",
         "3":"Bar"
     };

     $('#input2').val(map[$(this).val()]);
});

您可以在此处查看此操作:http://www.jsfiddle.net/dCy6f/

如果您希望仅在用户输入第一个输入字段时更新第二个值,请将“keyup”更改为“更改”。