Ошибка: синтаксическая ошибка, нераспознанное выражение: опция #whitelist_end [значение * = + значение +] - PullRequest
0 голосов
/ 15 октября 2019

Я получаю синтаксическую ошибку, но в основном из-за того, что я сам не знаю, как ее написать.

Я пытался, но я действительно застрял. Пока я чувствую, что я близко.

Мой код следующий:

function hourselect_link_field(source_select, target_select){
    var source_value = $('#' + source_select + ' :selected').val();
    var time = parseInt(source_value.replace(":", ""));


    var time_values = $("#" + target_select + " option").map(function () {
        return this.value;
    }).get();


    $.each(time_values, function (index, value) {
        var set_time = parseInt(value.replace(":", ""));
        if (set_time <= time) {
            $("#" + target_select + " option[value*=  + value + ]").prop('disabled', true);
            $("#" + target_select + " option[value*=  + value + ]").addClass('disabled');

        }
    });

//    console.log('time values = ' + time_values);

    //alert(time);
}

И моя проблема в основном заключается в

$("#" + target_select + " option[value*=  + value + ]").prop('disabled', true);
$("#" + target_select + " option[value*=  + value + ]").addClass('disabled');

И, если быть более конкретным:

option[value*=  + value + ]"

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

Я хочу, если значение имеет: '00: 00 ', чтобы это было установлено как отключенное. Но это не работает.

Я получаю эту синтаксическую ошибку

При попытке:

        $("#" + target_select + " option[value*= " + value + "]").prop('disabled', true);

Это также не работает.

Такчто мне не хватает?

Редактировать: Ответить

Решение, предоставленное @Casper & @Bilal Siddiqui

$.each(time_values, function (index, value) {
    var set_time = parseInt(value.replace(":", ""));
    if (set_time <= time) {
        $(`#${target_select} option[value*='${value}']`).prop('disabled', true);
        $("#" + target_select + " option[value*='" + value + "']").prop('disabled', true);
    }
});

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Вы можете использовать старый метод или литералы шаблона ES6.

let select1 = 'sel1';
let select2 = 'sel2';
let val = '00:00';

$(`#${select1} option[value*='${val}']`).prop('disabled', true).addClass('disabled');
$("#" + select2 + " option[value*='" + val + "']").prop('disabled', true).addClass('disabled');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="sel1">
  <option value="10">00:10</option>  
  <option value="00:00">00:00</option>  
</select>
  
<select id="sel2">
   <option value="10">00:10</option>  
   <option value="00:00">00:00</option>  
</select>
0 голосов
/ 15 октября 2019

Почему бы не попробовать строковые литералы:

$(`#${target_select} option[value*='${value}']`).prop('disabled', true);
$(`#${target_select} option[value*='${value}']`).addClass('disabled');

Другой подход

$("#" + target_select + " option").each(function () {
    var set_time = parseInt(this.value.replace(":", ""));
    if (set_time <= time) {
        $(this).prop('disabled', true);
        $(this).addClass('disabled');
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...