Выбор из меню один должен отключить то же значение из меню два - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть два значения окна выбора, Менеджер по продажам 1 и Менеджер по продажам 2 .Мне нужно скрыть выбранное значение опции Менеджер по продажам 1 в Менеджер по продажам 2 .Оба варианта получают значение из БД.Как я могу это реализовать?

Просмотр файла:

<div class="form-group">
    <label for="sales">Sales Manager 1</label>
    <select name="erp_customer[manager_id]" id="manager_id" class="form-control select2" data-validation="required" data-validation-error-msg="Sales Manager is required" placeholder="Select Manager">
        <option value="">Select Sales Manager</option>
        <?php
        foreach ($sale_manager as $mg) { ?>
        <option value="<?php echo $mg->manager_id; ?>" <?php echo (!empty($customer) && $customer->manager_id == $mg->manager_id) ? 'selected' : ''; ?>><?php echo ucfirst(mb_strtolower($mg->sale_fname)); ?></option>
        <?php } ?>
    </select>
</div>
<div class="form-group">
    <label for="sales">Sales Manager 2</label>
    <select name="erp_customer[manager_id1]" id="manager_id2" class="form-control select2" data-validation="required" data-validation-error-msg="Sales Manager is required" placeholder="Select Manager">
        <option value="">Select Sales Manager</option>
        <?php
        foreach ($sale_manager as $mg) { ?>
        <option value="<?php echo $mg->manager_id; ?>" <?php echo (!empty($customer) && $customer->manager_id1 == $mg->manager_id) ? 'selected' : ''; ?>><?php echo ucfirst(mb_strtolower($mg->sale_fname)); ?></option>
        <?php } ?>
    </select>
</div>

Значения опций будут выглядеть как 1, 2, 3, 4. Я получаю имя из другой таблицы, где 1="Ram" 2="ragu" так как я могу скрыть значение параметра 1 в менеджере по продажам 2, когда он выбран.Я пробовал этот код, но помогает только при первом выборе.Как только я пытаюсь выбрать снова, отключается только первое выбранное значение.

$('.form-control[id=manager_id]').on('change', function(e){
    var thisVal = $(this).val();
    $('.form-control[id=manager_id2] option').each(function(){
        if(thisVal == $(this).attr('value')){
            $(this).attr('disabled', 'disabled');
        } else {
            $(this).removeAttr('disabled');
        }
    })
})

Мой контроллер:

public function addcustomer(){
    $data["title"] = "Add New Customer";
    $data["sale_manager"] = $this->customer_model->getsales_managerlist();
    load_default_template('customer/addnew',$data,$this);
    echo $this->template->render("", true);
}

Моя модель:

public function getsales_managerlist(){
    $this->db->select("*")->from('erp_manager')->where("status", 1);
    $query = $this->db->get();
    return $query->result();
}

1 Ответ

0 голосов
/ 04 декабря 2018

Я думаю, вам действительно не нужно делать else в вашем цикле для отключения.Просто удалите его по умолчанию, а затем установите его снова, если значение совпадает.Вот демонстрация нижеприведенного скрипта: https://jsfiddle.net/wf82Lc3j/

$(function(){
    $(this).on('change', '.form-control[id=manager_id]', function(e){
        // Get current value
        var thisVal =   $(this).val();
        // Get the second select obj
        var thatObj =   $('.form-control[id=manager_id2]');
        // Loop options
        $.each(thatObj.children(), function(k,v){
            // Just remove disabled right off the start
            $(v).attr('disabled', false);
            // If value equals current
            if($(v).attr('value') == thisVal) {
                // If not on the default select option
                if(thisVal != '') {
                    // Disable the option
                    $(v).attr('disabled', true);
                    // If the user has already select this item before selecting from the first menu
                    if($(v).is(":selected")) {
                        // Reset the selection to default
                        thatObj.val('');
                    }
                }
            }
        }); 
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...