Jquery onchange не обновляет значения объекта

#javascript #jquery

#javascript #jquery

Вопрос:

Как мы можем применить функцию onChage для ввода в jquery

Как я могу применить функцию onchange к флажку, дате и имени и обновить данные в объекте initialState

если флажок установлен, то его значение true, а если флажок снят, то значение false

это мой javascript

     const sectionWork = (event) => {
       event.preventDefault();
       let initialState = {
         check: false,
         Date: "",
         name: ""
       }
       $("#exampleCheck1").on('change', function() {
         if ($(this).is(':checked')) {
           $(this).attr('value', 'true');
         } else {
           $(this).attr('value', 'false');
         }
         initialState.check = $(this).val();
       });
       $('#exampleInputDate').on('change', function() {
               initialState.Date = $(this).val()
       });
        $('#naming').on('change', function() {
             initialState.name = $(this).val()
        });
        console.log(initialState)

    }
  
     <form onsubmit="sectionWork(event)">
        <div class="form-check">
            <input type="checkbox" class="form-check-input" id="exampleCheck1">
            <label class="form-check-label" for="exampleCheck1">Check me out</label>
        </div>
        <div class="form-group">
            <label for="exampleInputDate">Date</label>
            <input type="date" id="exampleInputDate" name="date">
        </div>
        <div class="form-group">
            <label for="exampleName">Name</label>
            <input type="text" aria-placeholder="Enter Name"  name = "naming" class="form-control" id="naming" >
        </div>

        <button type="submit" class="btn btn-primary">Releasing</button>
    </form>
  

Ответ №1:

Вы должны сделать эти обработчики событий глобальной областью действия, за пределами конкретного обработчика событий (вот обработчик onsubmit sectionWork )

 let initialState = {
  check: false,
  Date: "",
  name: ""
}
$("#exampleCheck1").on('change', function() {
  if ($(this).is(':checked')) {
    $(this).attr('value', 'true');
  } else {
    $(this).attr('value', 'false');
  }
  initialState.check = $(this).val();
});
$('#exampleInputDate').on('change', function() {
  initialState.Date = $(this).val()
});
$('#naming').on('change', function() {
  initialState.name = $(this).val()
});

const sectionWork = (event) => {
  event.preventDefault();
  console.log(initialState)

}  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form onsubmit="sectionWork(event)">
  <div class="form-check">
    <input type="checkbox" class="form-check-input" id="exampleCheck1">
    <label class="form-check-label" for="exampleCheck1">Check me out</label>
  </div>
  <div class="form-group">
    <label for="exampleInputDate">Date</label>
    <input type="date" id="exampleInputDate" name="date">
  </div>
  <div class="form-group">
    <label for="exampleName">Name</label>
    <input type="text" aria-placeholder="Enter Name" name="naming" class="form-control" id="naming">
  </div>

  <button type="submit" class="btn btn-primary">Releasing</button>
</form>