Grails: Как создать поле g: text для загрузки некоторых данных и отображения их в другом поле g: text? - PullRequest
1 голос
/ 25 сентября 2010

У меня есть два g: textfields в первом, я должен написать число, скажем, 12, а в поле g: text рядом с ним должно быть загружено заранее определенное имя для номера 12.

Первоес именем 'shipper' и другим 'shipperName' Всякий раз, когда я пишу код 12 в поле текста 'shipper', он должен возвращать имя отправителя в поле 'shipperName'.

Заранее спасибо!

Примеры:

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

Если я напишу число 12, оно должно вернуть USPS

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

И каждое число должноесть другое 'shipperName'

Еще раз спасибо!

Ответы [ 2 ]

2 голосов
/ 02 октября 2010

Чтобы связать две строки, проще всего использовать объект для создания словаря / карты, как показано ниже;

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

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

Вы можете увидеть это в действии здесь: http://www.jsfiddle.net/dCy6f/

Если вы хотите, чтобы второе значение обновлялось только после того, как пользователь завершил ввод в первое поле ввода, измените «keyup» на «change».

2 голосов
/ 27 сентября 2010

Это довольно легко, если вы будете использовать 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 по мере того, как пользователь печатает, не покидая поля редактирования, возможно, после задержки.Однако обработчик событий остается тем же самым, меняется только событие (с «размытия» на «изменение» или что-то в этом роде)

...