Tworzę formularz, który wybieram jedną opcję z czasami możliwością uzupełnienia odpowiedzi tu wpisz opis obrazu

Udaje mi się wyłączyć drugą opcję, gdy jedno pole wyboru jest zaznaczone, ale jak chcesz włączyć tekst wejściowy, któremu odpowiada

  function enableDisableAll(e) {
                var own = e;
                var form = document.getElementById('myForm');
                var elements = form.elements;

                for (var i = 0 ; i < elements.length ; i++){
                    if(own !== elements[i] ){

                        if(own.checked == true){

                            elements[i].disabled = true;

                        }else{

                            elements[i].disabled = false;
                        }
                    }
                }


            }
.form_control label{

    font-weight: normal;
    font-size: 9px;
    text-align: left;
    color: #2c2c2c;
}

.gestion_compte_consultant{
    display: flex;
    flex-direction: column;
    align-content: center;
}

.title_form{
    padding-bottom: 1.125rem;
    margin-bottom: 1.125rem;
    font-weight: bold;
    font-size: 12px;
    color: #1d5ba6;

    text-align: center;
}

.form_control{
    margin-bottom: 1.5rem;
}

.form_control label{
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
}

/* .form_control label span{
    text-align: match-parent;
} */

.form_control span{
    text-align: justify;
}

.form_control input[type=text]{

    margin-left: auto;
    width: 98.09px;
    height: 18.5px;
    border-radius: 8px;
    background: transparent;
    border: 1px solid #979797;

    font-size: 9px;
    text-align: left;
    color: #2c2c2c;
}

/* .square{
    display: none;
} */

.square + .LabelTransact:before{

    display: inline-block;
    padding-right: 1rem;

    font-family: "FontAwesome";
    font-size: 1rem;
    font-weight: 400;
    content: "\f058";
    color: #C7C7CC;

    clear: both;
}

.square:checked + .LabelTransact:before{
    color: #007AFF;
}

.form-field input[type=submit]{
    display: block;
    margin-left: auto;
    margin-right: auto;
    padding: 8px;

    border: none;
    border-radius: 8px;
    background: #A7B123;
    color: #fff;


}
{!! Form::open(['route' => 'Usertransac', 'method' => 'POST', 'id' => 'myForm'])  !!}
                    <p class="title_form">Option de salaire pour le mois d'août 2019</p>
                    <div class="form_control">
                        {{Form::checkbox('allSalary', true, (bool) 0, ['class' => 'square', 'onclick' => 'enableDisableAll(this)' ])}}
                        {{Form::label('allSalary','Recevoir un salaire en utilisant tout mon solde', ['class' => 'LabelTransact'])}}
                    </div>
                    <div class="form_control">
                        {{Form::checkbox('salIfSolde', true, (bool) 0, ['class' => 'square', 'onclick' => 'enableDisableAll(this)' ])}}
                        {{Form::label('salIfSolde','Recevoir un salaire uniquement si mon solde atteint', ['class' => 'LabelTransact'])}}
                        {{Form::text('salIfSolde','',['id' => 'montantSaluntil', 'onkeypress' => 'isInputNumber(event)', 'placeholder' => '(Min.420)'])}}
                    </div>
                    <div class="form_control">
                        {{Form::checkbox('minSolde', true, (bool) 0, ['class' => 'square', 'onclick' => 'enableDisableAll(this)' ])}}
                        {{Form::label('minSolde','Recevoir un salaire uniquement si je peux conserver sur mon Espace adhérent la somme de', ['class' => 'LabelTransact'])}}
                        {{Form::text('minSolde','',['id' => 'montantSaluntil2', 'onkeypress' => 'isInputNumber(event)', 'placeholder' => '(Min.1)'])}}
                    </div>
                    <div class="form_control">
                        {{Form::checkbox('salIfSolde', true, (bool) 0, ['class' => 'square', 'onclick' => 'enableDisableAll(this)' ])}}
                        {{Form::label('salIfSolde','Me verser une paie sans dépasser un salaire net (hors frais et hors PAS) de ', ['class' => 'LabelTransact'])}}
                        {{Form::text('salIfSolde','',['id' => 'montantSaluntil2', 'onkeypress' => 'isInputNumber(event)', 'placeholder' => '(Min.220)'])}}
                    </div>
                    <div class="form_control">
                        {{Form::checkbox('no_Salary',true, (bool) 0, ['class' => 'square', 'onclick' => 'enableDisableAll(this)' ])}}
                        {{Form::label('no_Salary','Ne pas recevoir de salaire ni de frais ce mois-ci', ['class' => 'LabelTransact'])}}
                    </div>
                    <div class="form_control">
                        {!! Form::submit('VALIDER') !!}
                    </div>

                {!! Form::close() !!}

Nie znalazłem sposobu, aby włączyć wiersz, w którym zaznaczono pole wyboru i pobrać dane, przypuszczam, że kiedy sumbit, wszystkie inne dane zostaną uwzględnione, ma wartość null w mojej bazie danych

0
matthias screed 19 grudzień 2019, 13:52

1 odpowiedź

Cóż, zamiast iteracji po wszystkich elementach formularza, zachowaj identyfikatory elementów formularza, które chcesz wyłączyć / włączyć w różnych tablicach i kieruj je indywidualnie.

function enableDisableAll(e) {
    var checkboxes = [
        'allSalary',
        'salIfSolde',
        'minSolde',
        'salIfSolde'
    ];

    for (var i = 0; i < checkboxes.length; i++) {
        var checkbox = = document.getElementById(checkboxes[i]);

        if (e.checked) {
            checkbox.disabled = true;
        } else {
            checkbox.disabled = false;
        }
    }
}

Aktualizacja: Dodaj identyfikator do każdego elementu, w tym te, które nie mają identyfikatora, a następnie dodaj identyfikatory do tablicy w tej funkcji. na przykład:

{{Form::checkbox('salIfSolde', true, false, ['id' => 'check-salIfSolde', 'class' => 'square', 'onclick' => 'enableDisableAll(this)' ])}}
0
Kiafar 19 grudzień 2019, 18:25
Próbuję tej metody, ale automatycznie zaznaczam pierwsze pola wyboru i nie wyłącza / nie włącza wejścia [tekst] odpowiadającego w tym samym wierszu
 – 
matthias screed
19 grudzień 2019, 17:19