Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не получается добавить валидацию в форму (https://javascript.ru/forum/dom-window/83083-ne-poluchaetsya-dobavit-validaciyu-v-formu.html)

Vaska 09.09.2021 07:29

Не получается добавить валидацию в форму
 
Приветствую!

Не получается добавить валидацию в форму с ajax()

<form action="{:url('Membercomplain/apply_handle')}" method="post" id="handle_form">
        <textarea id="complain_talk"></textarea>
	    <a id="btn_publish" class="submit">Отправить сообщение</a> 
</form>

<script type="text/javascript">
    $(document).ready(function(){
        get_complain_talk();
        $("#btn_publish").click(function(){
                layer.msg("{$Think.lang.talk_null}");
            else {
                publish_complain_talk();
            }
        });
		
	$('#handle_form').validate({
		errorPlacement: function (error, element) {
			error.appendTo(element.nextAll('span.error'));
		},
		rules: {
			complain_talk: {
				required: true,
                maxlength: 20
			}
		},
		messages: {
			complain_talk: {
				required: 'Не может быть пустым',
                maxlength: 'Не более 20 символов'
			}
		}
	});		
    });
	
    function publish_complain_talk() {
		$.ajax({
            type:'POST',
            url:"{:url('Membercomplain/publish_complain_talk')}",
            cache:false,
            data:"complain_id={$complain_info.complain_id}&complain_talk="+encodeURIComponent($("#complain_talk").val()),
            dataType:'json',
            error:function(){
                layer.msg("Ошибка отправления 1");
            },
            success:function(talk_list){
                if(talk_list == 'success') {
                    $("#complain_talk").val('');
                    get_complain_talk();
                    layer.msg("Успешно отправлено");
                }
                else {
                    layer.msg("Ошибка отправления 2");
                }
            }
        });
    }
</script>


Куда добавить if($('#handle_form').valid())?
Пробовал добавить
var _form = $("#handle_form");
        if(_form.valid()) $.ajax({

в строку 36, но не работает.

Можете подсказать?

рони 09.09.2021 07:58

Цитата:

Сообщение от Vaska
var _form =

перенести в строку 16

рони 09.09.2021 08:01

Vaska,
и перенести строку 33 в строку 57

Vaska 09.09.2021 09:37

Цитата:

Сообщение от рони (Сообщение 540131)
var _form = перенести в строку 16
и перенести строку 33 в строку 57

Сделал, не работает.
Выдает ошибку: Ошибка отправления 2.
Ругается, что не может отправить в talk_list
Я полный код привел ниже.

Вот исправления
<div id="div_talk" class="dsm-complain-talk"> </div>
<form action="{:url('Membercomplain/apply_handle')}" method="post" id="handle_form">
        <textarea id="complain_talk"></textarea>
	    <a id="btn_publish" class="submit">Отправить сообщение</a> 
</form>

<script type="text/javascript">
$(document).ready(function(){
	get_complain_talk();
	$("#btn_publish").click(function(){
		if($("#complain_talk").val()=='') {
			layer.msg("{$Think.lang.talk_null}");
		}
		else {
			publish_complain_talk();
		}
	});
	
	var _form = $('#handle_form').validate({
		errorPlacement: function (error, element) {
			error.appendTo(element.nextAll('span.error'));
		},
		rules: {
			complain_talk: {
				required: true,
                maxlength: 2
			}
		},
		messages: {
			complain_talk: {
				required: '<i class="iconfont">&#xe64c;</i>{$Think.lang.please_fill_refund_instructions}',
                maxlength: '{$Think.lang.appeal_message_error}'
			}
		}
	});	
    function publish_complain_talk() {
        if(_form.valid()) $.ajax({
            type:'POST',
            url:"{:url('Membercomplain/publish_complain_talk')}",
            cache:false,
            data:"complain_id={$complain_info.complain_id}&complain_talk="+encodeURIComponent($("#complain_talk").val()),
            dataType:'json',
            error:function(){
                layer.msg("Ошибка отправления 1");
			},
            success:function(talk_list){
                if(talk_list == 'success') {
                    $("#complain_talk").val('');
                    get_complain_talk();
                    layer.msg("{$Think.lang.talk_send_success}");
				}
                else {
                    layer.msg("Ошибка отправления 2");
				}
			}
		});
	}
    function get_complain_talk() {
        $("#div_talk").empty();
         $.ajax({
            type:'POST',
            url:"{:url('Membercomplain/get_complain_talk')}",
            cache:false,
            data:"complain_id={$complain_info.complain_id}",
            dataType:'json',
            error:function(){
                $("#div_talk").append("<p class='admin'>"+"{$Think.lang.talk_none}"+"</p>");
            },
            success:function(talk_list){
                if(talk_list.length >= 1) {
                    for(var i = 0; i < talk_list.length; i++)
                    {
                        $("#div_talk").append("<p class='"+talk_list[i].css+"'>"+talk_list[i].talk+"</p>");
                    }
                }
                else {
                    $("#div_talk").append("<p class='admin'>"+"{$Think.lang.talk_none}"+"</p>");
                }
            }
        });
    }
	});
</script>

рони 09.09.2021 09:51

Цитата:

Сообщение от Vaska
Сделал,

код покажите.

рони 09.09.2021 09:59

Vaska,
get_complain_talk это что?

Vaska 09.09.2021 10:05

Цитата:

Сообщение от рони (Сообщение 540142)
Vaska,
get_complain_talk это что?

Выше весь код добавил.

рони 09.09.2021 10:11

Цитата:

Сообщение от Vaska
Выше весь код добавил.

ошибки то какие выдаёт?

Vaska 09.09.2021 10:15

Цитата:

Сообщение от рони (Сообщение 540145)
ошибки то какие выдаёт?

Ошибка отправления 2.

рони 09.09.2021 10:20

Vaska,
...пока без вариантов


Часовой пояс GMT +3, время: 09:42.