JQuery выбрать значение из раскрывающегося списка в зависимости от текстового значения - PullRequest
0 голосов
/ 27 октября 2011

У меня есть магазин magento и продукт с выпадающим списком с 30 вариантами размеров. У меня также есть текстовое поле, в котором мне нужно сослаться на выпадающий список и выбрать значение в зависимости от того, что написано в этом поле.

Так, например, если кто-то набирает 105 в текстовом поле, мне нужно, чтобы jQuery автоматически выбрал значение 100-110 в раскрывающемся списке (что, в свою очередь, вызывает изменение цены Ajax, которое уже установлено).

Возможно ли это в jQuery и какие функции мне следует искать?

Редактировать: Код jQuery до сих пор ...

<script type="text/javascript">
jQuery(document).ready(function(){
    jQuery("#options_483998_text").keyup(function(){
        var value = jQuery("#options_483998_text").val() * 1;
        var jQueryselect = jQuery("select#attribute592");
        var optionValue = "";
        jQuery('option', jQueryselect).each(function(){
            var range = jQuery(this).text().match(/\d+/g);
            if(range && value >= range[0] && value <= range[1]){
                optionValue = this.value;
                return false;
            }
        });

        jQueryselect.val(optionValue);jQueryselect.change();

    });
    jQuery("#options_483997_text").keyup(function(){
        var value = jQuery("#options_483997_text").val() * 1;
        var jQueryselect = jQuery("select#attribute593");
        var optionValue = "";
        jQuery('option', jQueryselect).each(function(){
            var range = jQuery(this).text().match(/\d+/g);
            if(range && value >= range[0] && value <= range[1]){
                optionValue = this.value;
                return false;
            }
        });

        jQueryselect.val(optionValue);jQueryselect.change();
    });


});
</script> 

1 Ответ

3 голосов
/ 27 октября 2011

Переберите каждый элемент опции и проверьте, находится ли данное значение в пределах диапазона значения опции. Скрипка: http://jsfiddle.net/QFfLB/2/

var value = $("#inputBox").val() * 1; //Convert to number, example: 105
var elem;
$('select option').each(function(){
    var val = $(this).val();    //Example:  100-110
    var range = val.split("-"); //Example: [100,110]
    if(val >= range[0] && val <= range[1]){
        elem = this;
        return false;
    }
});
elem = $(elem); //If existent, elem will be the jQuery object,
                // representing the option element

В этом коде предполагается, что все значения параметров имеют следующий формат: x-y (где x и y - числа). Если ваш код содержит что-то вроде 120+, код необходимо изменить. Если это так, оставьте комментарий со ссылкой на ваш соответствующий код, и я посмотрю его.

Обновление - Скрипка: http://jsfiddle.net/QFfLB/4/
Используйте метод .text(), чтобы получить метку опции. Затем используйте .match(/\d+/g), чтобы найти числовые значения:

var value = $("#inputBox").val() * 1;    //Get number
var $select = $("select#attribute592");  //<select> element
var optionValue = "";                    //Default value
$('option', $select).each(function(){
    var range = $(this).text().match(/\d+/g); //Range
    if(range && value >= range[0] && value < range[1]){
        optionValue = this.value;
        return false;
    }
});
$select.val(optionValue);                //Set new option value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...