suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Wie füge ich bei Validierung eine Funktionsmethode hinzu, um festzustellen, ob die Eingabe einen Wert hat?

Jetzt gibt es ein Formular, das per Validieren verifiziert und übermittelt wird.
Das Produkt erfordert die Beurteilung des Preiswerts in der Tabelle, die nach dem Klicken auf die Schaltfläche „Preis hinzufügen“ erstellt wird.
Ich habe mir die js-Struktur angesehen,
Ich habe zuerst das gesamte vorhandene Formular überprüft:
Das nach dem Klicken auf „Preis hinzufügen“ generierte Formular befindet sich ebenfalls im Dom, aber bevor es generiert wird, klicke ich auf die Schaltfläche „Senden“. verifizieren? Die Liste der
js lautet wie folgt:

    var basicForm = $('.form-horizontal');
    $(function(){
        MyValidator.init();
        var date = new Date();
        if ($("#startTime")[0].value == "" || $("#startTime")[0].value == null || $("#startTime")[0].value == undefined) {
            $("#startTime")[0].value = date.getFullYear()+"-"+(date.getMonth()+1)+"-"+(date.getDate()<10 ? "0"+date.getDate() : date.getDate());
        }
        if ($("#endTime")[0].value == "" || $("#endTime")[0].value == null || $("#endTime")[0].value == undefined) {
            $("#endTime")[0].value = date.getFullYear()+"-"+(date.getMonth()+1)+"-"+(date.getDate()<10 ? "0"+date.getDate() : date.getDate());
        }
    });
    var MyValidator = function() {
        var handleSubmit = function() {
            basicForm.validate({
                errorElement : 'span',
                errorClass : 'help-block',
                focusInvalid : false,
                rules : {
                    "productName" : {
                        required : true,
                        maxlength : 50
                    },
            "code" : {
                required : true,
            }
                },
                messages : {
                    "productName" : {
                        required : "商品名称不允许为空!",
                        maxlength : "商品名称不允许超过50个字符!"
                    },
            "code" : {
                        required : "商品代码不允许为空!",
                        maxlength : "商品代码不允许超过50个字符!"
                    }        
                },
                highlight : function(element) {
                    $(element).closest('.single').addClass('has-error');
                },
                success : function(label) {
                    label.closest('.single').removeClass('has-error');
                    label.remove();
                },
                errorPlacement : function(error, element) {
                        element.parent('p').append(error).attr("style","float:left");
                },
                submitHandler : function(form) {
                    /* var data = form.serializeArray(); */
                     var url = $(".form-horizontal").attr("action");
                     var options = {
                         url: url,
                         type: 'post',
                         dataType: 'text',
                         data: $(".form-horizontal").serialize(),
                         success: function (data) {
                             parent.layer.open({
                                 area : ['25%','25%'],//设置弹出框区域大小
                                 title: ['提示', 'background:#1b91e0;color:#fff;font-size:24px;text-align:center;'],
                                 content: data,
                                 btnAlign: 'c',
                                 btn: ['确定'],
                                 yes: function(index, layero){
                                    var isSuccess = parent.$("#layui-layer"+index).contents().find("#isSuccess").html();
                                     if(isSuccess == 1){
                                         window.location.href="/product/list.do";
                                     }
                                     parent.layer.closeAll();
                                 }
                             });
                         },
                         error: function (data) {
                             parent.layer.open({
                                 area : ['25%','25%'],//设置弹出框区域大小
                                 title: ['错误', 'background:#1b91e0;color:#fff;font-size:24px;text-align:center;'],
                                 content: data,
                                 btnAlign: 'c',
                                 btn: ['确定'],
                                 yes: function(index, layero){
                                     parent.layer.closeAll();
                                 }
                             });
                         }
                     };
                     $.ajax(options);
         
                }
            });
            $('.form-horizontal input').keypress(function(e) {
                if (e.which == 13) {
                    if (basicForm.validate().form()) {
//                        basicForm.submit();
                    }
                }
            });
        }
        return {
            init : function() {
                handleSubmit();
            }
        };
    }();
 

Ich habe gesehen, dass der vorherige Ingenieur ein separates Methodenurteil für die Schaltfläche „Senden“ geschrieben hat,

Aber das fühlt sich immer noch falsch an. Wenn auf die Schaltfläche geklickt wird, werden zwei Ereignisse gleichzeitig ausgelöst, eines dient zum Absenden des Formulars und das andere ist diese Funktion.

Ich habe das Gefühl, dass ich noch eine Methode zur Validierung zur Beurteilung schreiben muss, aber wo soll ich sie in die oberste Funktion schreiben?

phpcn_u1582phpcn_u15822728 Tage vor1112

Antworte allen(1)Ich werde antworten

  • 扔个三星炸死你

    扔个三星炸死你2017-06-12 09:30:32

    这个应该在form的在onsubmit事件里面写
    <`<form onsubmit="validateFrom();">
    <script>

    function validateForm(){
        if($(".inputWidth").val()==""){
            alert("请添加价格!");
            $("#code").focus();
            return false;
        }
        return true;
     }

    </script>
    `

    Antwort
    0
  • StornierenAntwort