 
			
				17.11.2019, 14:18
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.07.2019 
					
					
					
						Сообщений: 21
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Не работает валидация для 1 из 3 полей формы
			 
			
		
		
		
		Не работает валидация для 1 из 3 полей формы на JQuery. 
Для поля Y все работает, а вот для Х - нет. 
Вот весь код сайта. 
Фунция валидации в самом конце
 
<html>
<head>
    <title>Лабораторная 2</title>
    <script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.js"></script>
    
    <script src="jquery-validation-1.19.1/dist/jquery.validate.js"></script> <
</head>
<style>
    body
    {
        background-color: hsl(190, 76%, 87%);
        display: flex;
        flex-direction: column;
        flex-wrap: nowrap;
        justify-content: space-around;
        align-items: center;
        align-content: center;
    }
    div.container
    {
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: space-around;
        align-items: center;
        align-content: center;
        height: 70%;
        border: 3px groove hsl(207, 64%, 48%) ;
    }
    ItemFlex
    {
    }
</style>
<body>
<div >
    <h1 style="color:#B88909">Проверка попадания точки в график</h1>
    <span style="margin-left: 60pt;color:#B88909"> Адамов Степан Сергеевич</span>
    <span style="color: #B88909 ">  P3210</span>
    <br> <span style="margin-left: 150pt" > Вариант - 352</span>
</div>
<div class="container" >
    <form target="graphics" method="POST" action="controller" class="ItemFlex Form "  id="myform" style="border-right:  3px groove  hsl(207, 83%, 75%);margin-left: 100pt;"   >
        X
        <Br><Br>
        <input type="checkbox"    onclick="changeX(-5)" value="-5">-5
        <input type="checkbox"   onclick="changeX(-4)"  value="-4">-4
        <input type="checkbox"   onclick="changeX(-3)" value="-3">-3
        <input type="checkbox"   onclick="changeX(-2)" value="-2">-2
        <input type="checkbox"   onclick="changeX(-1)"  value="-1">-1
        <input type="checkbox"   onclick="changeX(0)" value="0">0
        <input type="checkbox"   onclick="changeX(1)" value="1">1
        <input type="checkbox"   onclick="changeX(2)" value="2">2
        <input type="checkbox"  onclick="changeX(3)" value="3">3
        <input type="hidden" id="InputX" name="InputX" data-location="bottom" value="" />
        <input type="hidden"  name="Flag" data-location="bottom" value="true" />
        <Br>
        <label name="LabelX" ></label>
        <Br>
        <Br>
        Y
        <Br>
        <input type="text" id="InputY" class="Y" oninput="changeInputY()"  maxlength="5" size="15" name="InputY" placeholder=" От -5 до  3">
        <Br>
        <label name="LabelY" ></label>
        <Br>
        <Br>
        R
        <Br>
        <select id="RR" name="InputR">
            <option id="R1" value="1" >1</option>
            <option  id="R2" value="2" >2</option>
            <option id="R3" value="3" >3</option>
            <option id="R4" value="4" >4</option>
            <option id="R5" value="5" >5</option>
        </select>
        <Br>
        <Br>
        <input type="submit"   class="formWithValidation" >
    </form>
    <div class="ItemFlex">
        <canvas id="plot" width="300" height="300">
        </canvas>
    </div>
    <iframe id="if" name = "graphics" height="300"></iframe>
</div>
</body>
<script>
    function  changeInputY()
    {
        var texts;
        document.getElementById("InputY").value=document.getElementById("InputY").value.replace(',','.');
    }
    function changeR()
    {
        var selind = document.getElementById("RR").options.selectedIndex;
        R= document.getElementById("RR").options[selind].value;
    }
    function changeX(value)
    {
        document.getElementById("InputX").value= value;
    }
    var plot_canvas = document.getElementById("plot");
    var plot_context = plot_canvas.getContext("2d");
    plot_context.beginPath();
    plot_context.arc(150, 150, 100, 0, Math.PI/2);
    plot_context.lineTo(150, 150);
    plot_context.closePath();
    plot_context.rect(50, 100, 100, 50);
    plot_context.fillStyle = 'red';
    plot_context.fill();
    plot_context.beginPath();
    plot_context.moveTo(100, 150);
    plot_context.lineTo(150, 250);
    plot_context.lineTo(150, 150);
    plot_context.fillStyle = 'red';
    plot_context.stroke();
    plot_context.closePath();
    plot_context.fillStyle = 'red';
    plot_context.fill();
    plot_context.beginPath();
    //Ox
    plot_context.moveTo(30, 150);
    plot_context.lineTo(270, 150);
    plot_context.lineTo(260, 140);
    plot_context.moveTo(270, 150);
    plot_context.lineTo(260, 160);
    //Oy
    plot_context.moveTo(150, 30);
    plot_context.lineTo(140, 40);
    plot_context.moveTo(150, 30);
    plot_context.lineTo(160, 40);
    plot_context.moveTo(150, 30);
    plot_context.lineTo(150, 270);
    plot_context.moveTo(30, 150);
    plot_context.closePath();
    plot_context.stroke();
    <jsp:useBean id="Bean" class="general.BeanComponent" scope="session"/>
    xxx=<%=Bean.getCount()%>
    var x;
    var y;
    var R = '1';
    document.getElementById('RR').addEventListener("click", changeR, false);
    plot_canvas.addEventListener("click", drawPoint, false);
   
    
    function drawPoint(e)
    {
        alert(xxx);
        //  alert(xxx);
        $('#results1').hide();
        if(R == '-1') {
            alert("Выберите какое-нибудь значение R");
        } else {
            var cell = getCursorPosition(e);
            plot_context.beginPath();
            plot_context.rect(x, y, 5, 5);
            x -= 149;
            y -= 148;
            y *= -1;
            x = x/100*R;
            y = y/100*R;
            $.ajax(
                {
                    type:'post',//тип запроса: get,post либо head
                    url:'controller',//url адрес файла обработчика
                    data:{'InputX': x, 'InputY': y, 'InputR': R,"Flag": false},//параметры запроса
                    response:'text',//тип возвращаемого ответа text либо xml
                    error: function (message)
                    {
                        console.log(message);
                        $('#results1').text(message);
                        alert("Error " + message+  $('#results1').text(message));
                    },
                    success:function (data)
                    {//возвращаый результат от сервера
                        console.log(data);
                        data=String(data);
                        plot_context.fillStyle = 'orange';
                        plot_context.fill();
                        data.replace('true', '');
                        data.replace('false','');
                        var ifr = document.getElementById('if').contentDocument;
                        ifr.open();
                        ifr.writeln(data);
                        ifr.close();
                        //$('#results1').text(numy);
                        /*alert("Correct " + message);
                        $$('result',$$('result').innerHTML+'<br />'+data);*/
                    }
                });
        }
    }
    function getCursorPosition(e) {
        if (e.pageX != undefined && e.pageY != undefined) {
            x = e.pageX;
            y = e.pageY;
        }
        else {
            x = e.clientX + document.body.scrollLeft +
                document.documentElement.scrollLeft;
            y = e.clientY + document.body.scrollTop +
                document.documentElement.scrollTop;
        }
        x -= plot_canvas.offsetLeft ;
        y -= plot_canvas.offsetTop ;
    }
   
    $(document).ready(function ()
    {
        jQuery.validator.addMethod("numb", function()
        {
            console.log(Number ( document.getElementById("InputY").value) );
            if ( Number.isNaN(Number ( document.getElementById("InputY").value) )) return false ;
            else return  true;
        },"");
        var form=$('#myform');
        form.validate(
            {
            rules:
                {
                    InputX: {
                        required: true,
                       
                    },
                    InputY: {
                        numb:true,
                        required: true ,
                        max: 3 ,
                        min: -5,
                    },
                    InputR:
                        {
                            required: true
                        }},
            messages:
                {
                    InputX: {
                        required: "Заполните X",
                        
                    },
                    InputY:
                        {
                            required: "Заполните Y",
                            numb: " Вы ввели не число",
                            max: "Число должно быть меньше 3" ,
                            min: "Число должно быть больше -5",
                        },
                    InputR: {
                        required: "Заполните R",
                    },
                },
            errorPlacement: function(error, element)
            {
                if (element.attr("name") == "InputX") error.insertAfter($("label[name=LabelX]"));
                if (element.attr("name") == "InputY") {
                    error.insertAfter($("label[name=LabelY]"));
                }
                if (element.attr("name") == "InputR") error.insertAfter($("input[name=InputR]"));
            }
        });
    });
</script>
</html>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось stavatar@yandex.ru, 17.11.2019 в 14:48.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.11.2019, 14:40
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Зачем jQuery подключается дважды - строки 5 и 8? 
 
jquery-validation-1.19.1\dist\jquery.validate.js jquery-validation-1.19.1/dist/jquery.validate.js 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.11.2019, 14:47
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.07.2019 
					
					
					
						Сообщений: 21
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Ой,случайно , видимо.Но проблемы это не исправило 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.11.2019, 16:27
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Не странно ли иметь скрытое поле, значение которого непонятно чем заполняется? У вас куча флажков, значения которых можно присвоить скрытому полю. Может быть не батарея флажков, а связанная группа радио кнопок и скрытое поле выбросить? 
 
response:'text',//тип возвращаемого ответа text либо xml - нет такого параметра у ajax в jQuery, есть dataType. 
 
Кстати, зачем оно вообще это поле и проверять если его значение, а под его именем отправляется результат расчета как свойство объекта: 'InputX': x? Зачем вообще вам форма, которую вы не отправляете, а значит и поверка ее полей? 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось laimas, 17.11.2019 в 16:46.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.11.2019, 16:44
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.07.2019 
					
					
					
						Сообщений: 21
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Не странно ли иметь скрытое поле, значение которого непонятно чем заполняется? У вас куча флажков, значения которых можно присвоить скрытому полю. Может быть не батарея флажков, а связанная группа радио кнопок и скрытое поле выбросить? 
---------------------------------------------------- 
Это лабораторная.Именно так и должно быть как я сделал. 
 
response:'text',//тип возвращаемого ответа text либо xml - нет такого параметра у ajax в jQuery, есть dataType 
--------------------------------------------------- 
все нормально тут работало и так.Исправление этого изначальную проблему не исправило 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.11.2019, 16:49
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от stavatar@yandex.ru
			
		
	 | 
 
	| 
		Это лабораторная.
	 | 
 
	
 
 Это чушь, а не лаборатория - флажки для выбора множества, а вы из флажков присваиваете одно значение этому полю. А выбор одного из множества, это зависимые кнопки.
 
И на кой черт вам вообще нужна валидация, если форму вы не отправляете вообще.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.11.2019, 16:50
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от stavatar@yandex.ru
			
		
	 | 
 
	| 
		все нормально тут работало и так.
	 | 
 
	
 
 Не надо пороть отсебятины, работать оно не будет, просто данный параметр будет игнорироваться.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.11.2019, 16:58
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 И не надо тип number заключать в кавычки: 
 
не var R = '1';, а var R = 1;, не R == '-1', а R == -1 
 
а значения полей приводите к числу, иначе при мат. операциях может возникать баг. Или вам нужны именно строки? 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось laimas, 17.11.2019 в 17:00.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.11.2019, 17:27
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.07.2019 
					
					
					
						Сообщений: 21
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 нет.Форма отправляется спокойно.Проблема лишь в валидации. 
Я лишь просто делаю скрытое поле и потом ему присваиваю значение.И потом его значение спокойно вместе со всеми другими данными отправляется 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось stavatar@yandex.ru, 17.11.2019 в 17:29.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.11.2019, 17:27
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.07.2019 
					
					
					
						Сообщений: 21
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от laimas
			 
		
	 | 
 
	
		Это чушь, а не лаборатория - флажки для выбора множества, а вы из флажков присваиваете одно значение этому полю. А выбор одного из множества, это зависимые кнопки. 
 
И на кой черт вам вообще нужна валидация, если форму вы не отправляете вообще.
	 | 
 
	
 
 Форма отправляется при нажатии на кнопку.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 
 
 
 
	 | 
 
 
 |