Как загрузить данные в текстовое поле? - PullRequest
1 голос
/ 01 октября 2010

У меня есть два текстовых поля, и всякий раз, когда я пишу число в первом, оно должно давать мне свое имя во втором поле.

Допустим, я пишу 11 в «первом» поле, затем онодолжен автоматически поставить слово 'одиннадцать' (НЕ сам номер) на "второе" поле.И то же самое с любым числом.

Я знаю, что это можно сделать с помощью jQuery, но я просто не знаю как.Любые предложения ??

Ответы [ 4 ]

3 голосов
/ 01 октября 2010
$(function() {
  $('.input').bind('keyup',function() {
     $('.output').val($(this).val());
  });
});

Вы можете проверить это здесь http://jsbin.com/owani3

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

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

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

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

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

Для более продвинутого поведения:

$('#input1').bind('keyup',function() {
     var str = '';
     var input = $(this).val();
     var intVal = parseInt(input, 10); // Dont forget the radix
     var map = {
         "1":"One",
         "2":"Fish",
         "3":"Bar"
     };

     if (intVal > 50 && intVal < 100) {
         str = 'Something';
     } else if (map.hasOwnProperty(input)) {
         str = map[input];
     }

     $('#input2').val(str);
});

Вы можете проверить это дополнение здесь: http://www.jsfiddle.net/H6skz/

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

Чтобы абстрагировать это в функцию, вы можете сделать:

function relate(me, withMe) {
    $(me).bind('keyup',function() {
         var str = '';
         var input = $(this).val();
         var intVal = parseInt(input, 10); // Dont forget the radix
         var map = {
             "1":"One",
             "2":"Fish",
             "3":"Bar"
         };

         if (intVal > 50 && intVal < 100) {
             str = 'Something';
         } else if (map.hasOwnProperty(input)) {
             str = map[input];
         }

         $(withMe).val(str);
    });
}

, а затем используйте его следующим образом:

relate('#input1', '#input2');

Для более интуитивного интерфейса напишите плагин jQuery:

(function ($) {
    jQuery.fn.relate = function (withMe) {
        this.bind('keyup',function() {
             var str = '';
             var input = $(this).val();
             var intVal = parseInt(input, 10); // Dont forget the radix
             var map = {
                 "1":"One",
                 "2":"Fish",
                 "3":"Bar"
             };

             if (intVal > 50 && intVal < 100) {
                 str = 'Something';
             } else if (map.hasOwnProperty(input)) {
                 str = map[input];
             }

             $(withMe).val(str);
        });
    };
}(jQuery));

и затем используйте следующее:

$('#input1').relate('#input2');
1 голос
/ 01 октября 2010

Для любого количества текстовых полей это должно работать:

​​$(".syn").live("keyup", function() {
  var self = $(this);
  $(".syn").each(function() {
    $(this).val(self.val());
  });
})​​​​​​​​​​​​​​​

просто поместите класс syn в ваш текстовый ввод

1 голос
/ 01 октября 2010

Это должно сделать работу

$('#f1').live('keyup', function(){
    $('#f2').val($(this).val())
})

Проверьте рабочую демонстрацию: http://jsfiddle.net/E44Un/

...