Javascript checkbox onChange

后端 未结 10 1184
孤街浪徒
孤街浪徒 2020-11-28 06:00

I have a checkbox in a form and I\'d like it to work according to following scenario:

  • if someone checks it, the value of a textfield (totalCost)
相关标签:
10条回答
  • 2020-11-28 06:42

    Reference the checkbox by it's id and not with the # Assign the function to the onclick attribute rather than using the change attribute

    var checkbox = $("save_" + fieldName);
    checkbox.onclick = function(event) {
        var checkbox = event.target;
    
        if (checkbox.checked) {
            //Checkbox has been checked
        } else {
            //Checkbox has been unchecked
        }
    };
    
    0 讨论(0)
  • 2020-11-28 06:43

    I know this seems like noob answer but I'm putting it here so that it can help others in the future.

    Suppose you are building a table with a foreach loop. And at the same time adding checkboxes at the end.

    <!-- Begin Loop-->
    <tr>
     <td><?=$criteria?></td>
     <td><?=$indicator?></td>
     <td><?=$target?></td>
     <td>
       <div class="form-check">
        <input type="checkbox" class="form-check-input" name="active" value="<?=$id?>" <?=$status?'checked':''?>> 
    <!-- mark as 'checked' if checkbox was selected on a previous save -->
       </div>
     </td>
    </tr>
    <!-- End of Loop -->
    

    You place a button below the table with a hidden input:

    <form method="post" action="/goalobj-review" id="goalobj">
    
     <!-- we retrieve saved checkboxes & concatenate them into a string separated by commas.i.e. $saved_data = "1,2,3"; -->
    
     <input type="hidden" name="result" id="selected" value="<?= $saved_data ?>>
     <button type="submit" class="btn btn-info" form="goalobj">Submit Changes</button>
    </form>
    

    You can write your script like so:

    <script type="text/javascript">
        var checkboxes = document.getElementsByClassName('form-check-input');
        var i;
        var tid = setInterval(function () {
            if (document.readyState !== "complete") {
                return;
            }
            clearInterval(tid);
        for(i=0;i<checkboxes.length;i++){
            checkboxes[i].addEventListener('click',checkBoxValue);
        }
        },100);
    
        function checkBoxValue(event) {
            var selected = document.querySelector("input[id=selected]");
            var result = 0;
            if(this.checked) {
    
                if(selected.value.length > 0) {
                    result = selected.value + "," + this.value;
                    document.querySelector("input[id=selected]").value = result;
                } else {
                    result = this.value;
                    document.querySelector("input[id=selected]").value = result;
                }
            }
            if(! this.checked) { 
    
    // trigger if unchecked. if checkbox is marked as 'checked' from a previous saved is deselected, this will also remove its corresponding value from our hidden input.
    
                var compact = selected.value.split(","); // split string into array
                var index = compact.indexOf(this.value); // return index of our selected checkbox
                compact.splice(index,1); // removes 1 item at specified index
                var newValue = compact.join(",") // returns a new string
                document.querySelector("input[id=selected]").value = newValue;
            }
    
        }
    </script>
    

    The ids of your checkboxes will be submitted as a string "1,2" within the result variable. You can then break it up at the controller level however you want.

    0 讨论(0)
  • 2020-11-28 06:43

    try

    totalCost.value = checkbox.checked ? 10 : calculate();
    

    function change(checkbox) {
      totalCost.value = checkbox.checked ? 10 : calculate();
    }
    
    function calculate() {
      return other.value*2;
    }
    input { display: block}
    Checkbox: <input type="checkbox" onclick="change(this)"/>
    Total cost: <input id="totalCost" type="number" value=5 />
    Other: <input id="other" type="number" value=7 />

    0 讨论(0)
  • 2020-11-28 06:44

    Javascript

      // on toggle method
      // to check status of checkbox
      function onToggle() {
        // check if checkbox is checked
        if (document.querySelector('#my-checkbox').checked) {
          // if checked
          console.log('checked');
        } else {
          // if unchecked
          console.log('unchecked');
        }
      }
    

    HTML

    <input id="my-checkbox" type="checkbox" onclick="onToggle()">

    0 讨论(0)
提交回复
热议问题