简体   繁体   中英

highlight empty input fields

I have a form where the user inputs numbers. A function is called on click. I want to highlight and empty any invalid fields (those that are not numbers). So far it highlights and clears all inputs. I need just the ones that are not filled in, or that have input that is not a number.

  function validatefilledIn() { "use strict"; var arr = document.getElementsByName('qty'); var score = document.getElementById('total'); for(var i=0; i<arr.length;i++){ if(isNaN(parseInt(arr[i].value))) { alert("Please make sure all the fields are filled in."); $('input').val('').css( "border-color", "red" ); $('#form1').find('#total').val(''); return false; } } } 
  <form name="myForm" id="form1"> <fieldset> <input type="text" name="qty" id="qty1" oninput="findTotal()" class="hvr-pop" required/> <input type="text" name="qty" id="qty2" oninput="findTotal()" class="hvr-pop" required/> <input type="text" name="qty" id="qty3" oninput="findTotal()" class="hvr-pop" required/> <input type="text" name="qty" id="qty4" oninput="findTotal()" class="hvr-pop" required/> <input type="text" name="qty" id="qty5" oninput="findTotal()" class="hvr-pop" required/> <input type="text" name="qty" id="qty6" oninput="findTotal()"class="hvr-pop" required/> </fieldset> </form> 

With if(isNaN(arr[i].value) || arr[i].value == "") it does work!

function validatefilledIn() {
    var arr = document.getElementsByName('qty');
    for(var i=0; i<arr.length;i++){
        if(isNaN(arr[i].value) || arr[i].value == "") {
            $(arr[i]).val('').css( "border-color", "red" );
        }
    }
} 

Full HTML:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Test</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    </head>
    <body>
        <script type="text/javascript">
            function findTotal() {
            }
            function validatefilledIn() {
                var arr = $("[name='qty']");
                $.each(arr, function(i, o) {
                    if(isNaN($(o).val()) || $(o).val() == "") {
                        $(o).val('').css( "border-color", "red" );
                    } else {
                        $(o).css( "border-color", "green" );
                    }
                });
            } 
        </script>
        <form name="myForm" id="form1">
            <fieldset>
                <input type="text" name="qty" id="qty1" oninput="findTotal()" class="hvr-pop" required/>   
                <input type="text" name="qty" id="qty2" oninput="findTotal()" class="hvr-pop" required/>    
                <input type="text" name="qty" id="qty3" oninput="findTotal()" class="hvr-pop" required/>    
                <input type="text" name="qty" id="qty4" oninput="findTotal()" class="hvr-pop" required/>    
                <input type="text" name="qty" id="qty5" oninput="findTotal()" class="hvr-pop" required/>    
                <input type="text" name="qty" id="qty6" oninput="findTotal()" class="hvr-pop" required/>    
            </fieldset>
            <button onClick="validatefilledIn()">Check</button>
        </form>   
    </body>
</html>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM