13

ユーザーが送信しようとしているときに実行されるjQueryフォーム検証スクリプトがあります。フォームが検証された後、フォームが送信される前に、AJaX リクエストを使用して別の関数を実行 (および完了) したいと考えています。

これがスクリプトです。zglosip関数は、個別に呼び出すと問題なく動作します。つまり、submit()関数内からではありません。

zglosip(); (呼び出したい関数)

function zglosip() {
        $.ajax({
            type : 'post',
            url : 'res/php/nZglos.php',
            data : {
            "erepid" : "111",
            "ip" : "222",
            "poz" : "333"
            },
            success : function(data, textStatus, jqXHR) {
            tempor.html(data);
            },
            error : function(XMLHttpRequest, textStatus, errorThrown) {
            tempor.html(errorThrown);
            },
            dataType : 'text'
            return true;
        });
    };

検証スクリプト ( Joren Rapiniによって作成され、私によって変更されました)

極と一時は、いくつかの div の名前を含む変数です

$("#forml").submit(function(){  
    //Validate required fields
    if ((pole.val() == "") || (pole.val() == blad)) {
        pole.addClass("podkresl");
        pole.val(blad);
    } else {
        pole.removeClass("podkresl");
    }
    // Validate the e-mail.
    if (!/\b(https?|ftp|file):\/\/[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|]/.test(pole.val())) {
        pole.addClass("podkresl");
        pole.val(blad);
    }


    if ($(":input").hasClass("podkresl")) {
        return false;
    } else {
      if (zglosip() == true) {
          return true
      }
    }
});

submit()既にお気づきのように、true が返された後に関数の true を返そうとしましたzglosIp()(スクリプトの下部にある if ステートメント)。残念ながら、これは機能しませんでした。zglosip()別の呼び出しも試みfunction{return true}ましたが、適切に使用していません。私を助けてください。

4

2 に答える 2

0

私の場合、ボタンから送信タイプを削除する必要があり、送信するデータの有効性をチェックするメソッドを呼び出す必要がありました。

<input type="button" value="Save" class="btn btn-success" id="submitbutton" /> 

次に、停止して続行する必要がある場合にチェックを行い、true を返すメソッドを作成しました。

 public ActionResult CheckBeforeSubbmission(datatype  var1)
 {
    if(var1>0)
         return Json(new { result1 = true });
    else
        return Json(new { result1 = false });
 }

その後、以下のコードに javascript/ajax を追加しました。

  $("#submitbutton").click(function (e) {

        var self = $('#form');
        //A value from the form to post to the controller
        var var1 = $('#var1elementid').val();


        $.ajax({
            type: "POST",
            url: "/SomeController/CheckBeforeSubbmission",
            data: {
                var1: var1
            },success: function (response) {
                if (response.result1) {
                    bootbox.confirm({
                        message: "The check failed! Do you want to submit?",
                        buttons: {
                            confirm: {
                                label: 'Yes',
                                className: 'btn-success'
                            },
                            cancel: {
                                label: 'Cancel',
                                className: 'btn-danger'
                            }
                        },
                        callback: function (result) {
                            if (result) {
                                self.submit();
                            } else {
                                bootbox.hideAll();
                                return false;
                            }
                            return false;
                        }
                    });
                } else {
                    self.submit();
                }
            },
            cache: false
        });
    });
于 2017-12-07T12:18:55.700 に答える