I’m making calculator using Ajax with validator plugin I could make calculator work but cannot implement validator to this… there are 2 issues.
- Since my HTML code’s button type is ‘button’ validation plugin doesn’t work. if I change this to ‘submit’ it redirect to the other page.
- Ajax conduct the answer before the validation!
I tried beforeSubmit and submitHandler…..maybe I used it wrong?…
what’s wrong with my JavaScript code?…
could anyone help me out please?
Many thanks!
<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="ajax.css"> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="//code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.js"></script> <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script> </head> <body> <form action="result.php" id="form"> <div id="input"> <div id="first_input"><label for="number1">Input one</label> <input type="text" id="number1" name="number1" placeholder="input number"></div> <div id="second_input"><label for="number2" >Input Two</label> <input type="text" id="number2" name="number2" placeholder="input number"></div> </div> <button type="button" id="plus" class="button" onclick="calculate(this.id)">plus</button> <button type="button" id="minus" class="button" onclick="calculate(this.id)">minus</button> <button type="button" id="multiply" class="button" onclick="calculate(this.id)">multiply</button> <button type="button" id="devide" class="button" onclick="calculate(this.id)">devide</button> </form> <p id="result"></p> <script type="text/javascript"> // validate(): $(function(){ $("#form").validate({ // 체크할 항목들의 룰 설정 rules: { number1: { required : true, digits : true }, number2: { required : true, digits : true } }, messages : { number1: { required : "this field is mandatory" }, number2: { required : "this field is mandatory" } }, }); }) if($('#form').valid()) { alert('three'); var This = $(this); } function calculate(buttonType) { $.ajax({ url: "result.php", type: "GET", async: false, data: { calType: buttonType, number1: $("#number1").val(), number2: $("#number2").val(), }, }).done(function(data) { $('#result').text(data); }); } </script> </body> </html>
<?php $calType = $_GET['calType']; $number1 = $_GET['number1']; $number2 = $_GET['number2']; $result = 0; switch ($calType) { case "plus": $result = $number1 + $number2; break; case "minus": $result = $number1 - $number2; break; case "devide": $result = $number1 / $number2; break; case "multiply": $result = $number1 * $number2; break; } echo $result;
Advertisement
Answer
Check that the form is valid by adding a call to jQuery valid()
method after validate()
:
$(function() { $("#form").validate({ // 체크할 항목들의 룰 설정 rules: { number1: { required: true, digits: true }, number2: { required: true, digits: true } }, messages: { number1: { required: "this field is mandatory" }, number2: { required: "this field is mandatory" } }, }); return $("#form").valid() }) function calculate(buttonType) { if ($("#form").valid()) { console.log("Valid!"); $.ajax({ url: "result.php", type: "GET", async: false, data: { calType: buttonType, number1: $("#number1").val(), number2: $("#number2").val(), }, }).done(function(data) { $('#result').text(data); }); } }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script> <form action="result.php" id="form"> <div id="input"> <div id="first_input"><label for="number1">Input one</label> <input type="text" id="number1" name="number1" placeholder="input number"></div> <div id="second_input"><label for="number2">Input Two</label> <input type="text" id="number2" name="number2" placeholder="input number"></div> </div> <button type="button" id="plus" class="button" onClick="calculate(this.id)">plus</button> <button type="button" id="minus" class="button" onClick="calculate(this.id)">minus</button> <button type="button" id="multiply" class="button" onClick="calculate(this.id)">multiply</button> <button type="button" id="devide" class="button" onClick="calculate(this.id)">devide</button> </form> <p id="result"></p>