0

私が抱えているこの問題に関する簡単な質問です。jeditable を使用して、ページ上のいくつかのフィールドをその場で編集しています。これは完全に機能しています。ここで、いくつかのデータチェックを実装したいと思います。入力されたデータをチェックするためのphpコードがあり、正しい場合はそのデータベースを更新し、そうでない場合はエラーを返します。私が抱えている問題は、エラーを吐き出して伝えたいのですが、フィールドをもう一度クリックして編集すると、ページが更新されるまでフィールドにエラーが表示されます。私がやりたいことは、ページを更新してからフィールドをもう一度クリックして編集するのではなく、エラーが発生した後にフィールドをクリックすると同じデータがフィールドに表示されることです。おそらく、エラーを返し、それをフィールドの上のある種のツールチップに渡す方法はありますか? もちろん、jeditable が機能する方法は、div がフィールドを囲んでいることです。次に、update.php ファイルでいくつかの js を呼び出しています。これは、jeditable がそれに渡すものを解析し、エラー チェックされる $value を返します。単にphpの一番下にある「return $value;」DBに保存された後、フィールドに戻されます。

私がここで求めていることを誰かが理解してくれることを願っています。

4

2 に答える 2

0

最も簡単な方法は、おそらくクライアント側の検証を行うことです。現在、フォームの送信時に PHP をチェックインすることにより、サーバー側の検証を行っています。何をチェックしていますか?コードがなければ、クライアント側の検証の良い例を示すのは困難です。

基本的なフィールド チェック:

var check_field = $("#field").val();
if (!check_field) { alert("Error message"); } else 
{ 
   // submit POST or whatever 
}

編集

MAC アドレス検証アルゴリズムは既にサーバー側で記述されているため、チェッカー関数を呼び出す別の ajax POST リクエストをお勧めします。そのリクエストの結果 (true、false) を取得し、クライアント側で確認します。true の場合、更新呼び出しを続行します。

例:

$("#form").submit(function() {
var mac = $("#macfield").val();
if (!mac) { alert("MAC address can't be empty!"); } else 
{ 
   $.POST("checkmacaddress.php", {macval: mac}).success(function(a){
       //assuming a comes back as a bool
       if (!a) { alert("Invalid MAC!"); } else
       {
          // if the checker returned true, update the record
          $.POST("update.php" ...);
       }
   });
} });

これには checkmacaddress.php は含まれていませんが、すでに関数を手元に持っている場合は、それを処理できるはずです。

于 2012-06-01T15:44:44.660 に答える
0

私がこれを行うときは嫌いです。ここに投稿してから、自分で答えを見つけてください...しかし、少なくとも誰かが同じ問題を抱えている場合、彼らはそれを見るでしょう. jeditable onsubmit関数について知りました...フィールドを編集するときにホバー時に表示するツールチップを使用しているため、ツールチップがエラーに設定され、有効なMacでない限りデータは送信されません。

    function isMAC(value) {
            teststr = value;
            regex=/^([0-9a-f]{2}([:-]|$)){6}$|([0-9a-f]{4}([.]|$)){3}$/i;
            if (regex.test(teststr)){
                    return true;
            }
            else {
                    return false;
            }
    }

    $(".edit_mac").editable("edit_mac.php", {
            onsubmit: function(settings, data) {
                    var input = $(data).find('input');
                    var value = input.val();
                if (isMAC(value)) {
                            return true;
                } else {
                            //display your message
                            $("#tooltip").html("Bad MAC Address...");
                            return false;
                    }
            },
          indicator : "Saving...",
          submitdata: { _method: "put" },
          submit : 'Save',
          cssclass : "editable",
          type : "text"
    });
于 2012-06-01T18:42:00.653 に答える