Jquery: как сделать выбор с конкретным идентификатором требуется - PullRequest
0 голосов
/ 04 ноября 2019

У меня проблема с формой регистрации. Я использовал foreach, чтобы получить все дополнения с опциями и дополнительными опциями, но я хочу сделать так, чтобы, если вы отметите 1 флажок, выбор станет обязательным. Теперь у меня есть то, что, если вы установите 1 флажок с 1 дополнительным, все выбранные становятся обязательными.

Итак, что я хочу: дать extraoptions_id с классом .extraoptions в jquery, чтобы он делал выбор только с идентификатором, а не со всеми.

Регистрационная форма html

<label>Options</label><br>
@foreach($option_array as $option)  
    <div>
        <input type="checkbox" class="option" id="option_{{ $option->exa_id }}" name="option_{{ $option->exa_id }}" value="{{ $option->exa_id }}" {{ isset($cache) ? (isset($cache['option_' . $option->exa_id]) ? 'checked' : '')  : (old() ? (old('option_' . $option->exa_id) ? 'checked' : '') : ($registration ? (in_array($option->exa_id, $registration_options) ? 'checked' : '') : '')) }} >
        <input type="hidden" value="{{ $option->exa_price }}" class="option_price_{{ $option->exa_id }}">
        <label>{{ $option->exa_name }}</label> <label class="exa_price">  €{{ $option->exa_price }} </label>    
    </div>

    <select name="extraoptions_{{ $option->exa_id }}" class="form-control extraoptions" id="extraoptions_{{ $option->exa_id }}">
        <option></option>
        @foreach($option->extraoptions as $extraoption)
            <option value="{{ $extraoption->eos_id }}" {{ ($registration? (in_array($extraoption->eos_id, $registration_options_extra) ? 'selected' : '') : '') }}>{{ $extraoption->eos_name }}</option>
        @endforeach
    </select>
    <br>
@endforeach

Jquery

$(".option").change(function(){
    var current_price = parseFloat($(".price").val());
    //console.log(current_price);

    var id = $(this).attr('id');
    console.log(id);

    var id_number = id.split("_")[1];
    //console.log(id_number);

    var option_price = parseFloat($(".option_price_" + id_number).val());
    //console.log(option_price);        


    if(this.checked){
        var new_price = parseFloat(current_price + option_price).toFixed(2);
        $(".price").val(new_price);

        var extraoption_id = $(".extraoptions").attr('id'); 
        console.log(extraoption_id);    
        //the problem:                      

        var extraoption_number = extraoption_id.split("_")[1];
        console.log(extraoption_number);                        


        $(".extraoptions").attr('required', 'True');
    }
    else{
        var new_price = parseFloat(current_price - option_price).toFixed(2);
        $(".price").val(new_price);                         

        $(".extraoptions").attr('required', 'False');
    }
}

Так как же дать extraoptions_id с требуемым? Заранее спасибо!

1 Ответ

0 голосов
/ 04 ноября 2019

добавить data-extra-id = "{{$ option-> exa_id}} в поле ввода.

<input type="checkbox" class="option" id="option_{{ $option->exa_id }}" data-extra-id="{{ $option->exa_id }}" ...
        $(".option").change(function(){

    ....

    $("#extraoptions_"+$(this).data('extra-id')).attr('required', 'True');
...

При необходимости объясню, я не буду. Не понижайте голос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...