Javascript Jquery: извлечь строку из значения и составить URL с этой строкой - PullRequest
2 голосов
/ 15 августа 2011

Я использую функцию автозаполнения Javascript, и мне нужно извлечь последние 5 символов из 'value' и затем составить URL для onSelect.

Используемая мной функция:

<script type="text/javascript">
    var options, a;
    jQuery(function(){
      var onAutocompleteSelect = function(value, data) {
          window.open('ITEM.PRO?id='+ value);
        }

      options = { 
      serviceUrl:'JQUERY-SEARCH.pro',
      onSelect: onAutocompleteSelect,
       };
      a = $('#query').autocomplete(options);

    });
    </script>

Когда я нажимаю на результат поиска, он загружает "ITEM.PRO?id= Артикль Марка Модель Год Описание 35612", но мне нужно загрузить "ITEM.PRO?id=35612"

Пожалуйста, не могли бы вы помочь мне?Я совершенно новичок в JS.Спасибо всем заранее!

Ответы [ 5 ]

2 голосов
/ 15 августа 2011

Вместо window.open('ITEM.PRO?id='+ value); Вы могли бы сделать это?

window.open('ITEM.PRO?id='+ value.split(' ').pop());
1 голос
/ 15 августа 2011

Есть несколько различных способов добиться этого.

Это самое простое - добавить

value = value.slice(-5);

прямо перед

window.open('ITEM.PRO?id='+ value);

Это устанавливает value вего последние 5 символов.Прочитайте здесь о функции String.slice.

Если вы хотите установить значение, так сказать, последнего «слова», разделенного пробелами, вы можете сделать это вместо этого:

value = value.split(" ").pop();

Другим методом было бы взять последнюю непрерывную строку цифр в значении.Для этого вы можете использовать это:

value = value.match(/\d+/).pop();

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

0 голосов
/ 15 августа 2011

Когда ваши идентификаторы превышают 5 цифр, ваш код сломается (как было указано в комментариях).Вы также можете использовать .split подход, упомянутый @bordoz, недостатком которого является то, что пробелы в любом из других слов могут нарушить это решение.Или вы могли бы использовать:

var url = 'ITEM.PRO?id='+ value.replace(/[^\d\.]/g,'');

, который потерпит неудачу, только если любое другое слово содержит числа.Какой из них лучше всего подходит для вашей ситуации?

0 голосов
/ 15 августа 2011

Попробуйте это

var onAutocompleteSelect = function(value, data) {
          window.open('ITEM.PRO?id='+ value.substring(value.length-5));
        }
0 голосов
/ 15 августа 2011

Это ужасное решение, но оно будет работать в случае, указанном вами.Я отредактирую, если вы опубликуете более подробную информацию:

<script type="text/javascript">
    var options, a;
    jQuery(function(){
      var onAutocompleteSelect = function(value, data) {
          window.open('ITEM.PRO?id='+ value.match(/\d+/)[0]);
        }

      options = { 
      serviceUrl:'JQUERY-SEARCH.pro',
      onSelect: onAutocompleteSelect,
       };
      a = $('#query').autocomplete(options);

    });
</script>

value.match(/\d+/)[0] будет сопоставлять любые цифры в вашей строке как любой массив, поэтому мы возьмем первый элемент в этом массиве.

...