【问题标题】:PHP JQuery and JeditablePHP JQuery 和 Jeditable
【发布时间】:2012-06-01 15:23:04
【问题描述】:

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

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

【问题讨论】:

    标签: php jquery mysql jeditable


    【解决方案1】:

    最简单的方法可能是进行一些客户端验证。现在,您正在通过在提交表单时签入 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 但如果您手头已有该功能,您应该能够处理它。

    【讨论】:

    • 检查用户是否输入了有效的 MAC 地址...我在 php 中有一个函数来“IsValidMACAddress($mac);”并返回真或假。
    • 谢谢。我理解这一切并且做了这样的事情,唯一的问题是拦截 JS 的 JEDITABLE 部分,这样如果 mac 无效,则根本不处理。可以内联编辑的每个单元格都由 $(".edit_mac").editable("edit_mac.php"...将返回的错误放入单元格中,而不是将其与已经存在的数据一起保留。不确定所以它在点击提交时检查 mac,如果确定则 jeditable 继续,否则显示错误,将原始数据保留在那里。
    【解决方案2】:

    讨厌我这样做,在这里发布然后自己找出答案......但至少如果有人遇到同样的问题,他们会看到它。我发现了 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"
        });
    

    【讨论】:

      猜你喜欢
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多