PHP JQuery and Jeditable


PHP JQuery and Jeditable

只是关于这个问题的一个快速问题。我正在使用jeditable来编辑页面上的某些字段。这工作得很好。现在我希望实现一些数据检查。我有我的php代码来检查输入的数据,如果正确,它会更新该数据库,如果不是,它将返回错误。我遇到的问题是我希望它吐出错误来告诉他们,但是当他们再次单击该字段进行编辑时,它会在字段中显示错误,直到页面刷新。我希望它做的是在错误发生后单击字段时在字段中具有相同的数据,而不必刷新页面然后再次单击该字段进行编辑。也许有一种方法可以返回错误并将其传递到字段上方的某种工具提示中?当然,jeditable 的工作方式是div 围绕字段,然后我有一些 js 调用我的 update.php 文件,这会解析 jeditable 传递给它的内容并返回一个要进行错误检查的$value,默认情况下,如果没问题,它只是在 php 的底部"返回$value;",在保存在数据库中后放回字段中。

希望有人能理解我在这里提出的要求,任何帮助将不胜感激。

最简单的方法可能是做一些客户端验证。现在,您正在通过在提交表单时签入PHP来进行服务器端验证。你在检查什么?没有代码,很难为您提供客户端验证的良好示例。

基本字段检查:

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

编辑

由于 MAC 地址验证算法已经在服务器端写入,因此我建议使用单独的 ajax POST 请求来调用检查器函数。获取该请求的结果(真、假)并在客户端检查它。如果为 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但如果您手头已经拥有该功能,您应该能够处理它。

讨厌

我这样做,在这里发布然后自己找出答案......但至少如果有人有同样的问题,他们会看到它。我发现了可编辑的提交函数...我在编辑字段时使用工具提示在悬停时显示,因此这会将工具提示设置为错误,并且除非是有效的 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"
    });