0

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

希望有人能理解我在这里提出的问题,并且我们将不胜感激。

4

2 回答 2

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 回答
0

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

基本字段检查:

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

编辑

由于 MAC 地址验证算法已经写在服务器端,我推荐一个单独的 ajax POST 请求,调用 checker 函数。获取该请求的结果(真,假)并在客户端检查它。如果为真,请继续更新调用。

例子:

$("#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 回答