通过PHP发送表单,每隔十分钟用JS自动保存

时间:2016-08-19 14:15:09

标签: javascript php jquery forms symfony

环境

  • PHP:Symfony - > Twig,Bootstrap
  • 主义 - > mongodb的
  • Jquery

项目

计时器正在工作,计算间隔,我可以发送表格。这很好,但是一旦我到达发送表单的部分,我似乎遇到了两个问题:

  • 间隔计数器工作
  • 自动提交表单,然后
    • 空字段不被接受
    • 表单未经过验证

表单本身是通过自定义构建的PHP图形界面设置的,它允许您非常轻松地设置简单的事物:字段,字段类型,名称和标签等。

这很酷,但这意味着你不能进入并对表格进行修补或完全修补。你可以改变的最多是模板中的美学。虽然你可以将每个表单元素包装在另一个表单元素或某种html标识符中,但这是一个选项,但是单调乏味......

在有效的检查中,表单会被上传,并且其他一切都很好,其他人会捕获无效的表单并让用户知道某些字段未填写。我会在这里发布该代码,但我认为它会皱眉根据。希望您了解PHP概念。

我可以分享的部分是JS:

autoSaveForm = function() {
    var form = $('form'),
        inputs = form.find('input');

    form.on('submit', function() {
        inputs.each( function( input ) {
            if (input.attr("disabled") === true){
                input.removeAttr("disabled");
            }
        })
    });

    function counter(){
        var present = $('.minutes').attr('id'),
            past = present;
        $('.minutes').text(past);
        setInterval(function(){
            past--;
            if(past>=0){
                $('.minutes').text(past);
            }
            if(past==0){
                $('.minutes').text(present);
            }
        },1000);
    }

    function disableInputs(){
        inputs.each( function( input ) {
            if (input.val() === ""){
                input.attr("disabled", true);
            }
        });
    }

    // Start
    counter();

    // Loop
    setInterval(function(){
        counter();
        form.submit()
    },10000);
};

这会在页面上设置一个计数器并计算一个间隔,现在设置为秒进行测试,但最终将是10分钟。

可能的解决方案

  1. 在提交之前禁用空字段,并在提交完成后删除该属性
    • 这需要完成,以便用户可以在流程结束时完成最后完成的保存
    • 这似乎不会禁用字段
  2. 我发现了一些关于在html中添加novalidate的内容,但并不是所有浏览器都支持它,而且表单的静态特性可能会变得棘手。
  3. 使用ajax发布表单并将一个save true变量附加到url的末尾,然后在PHP Controller中重定向它并检查URI var,尽管:
    • 然后我仍然有空字段
    • 解决此问题:在传递字段时为字段设置随机值或默认值。 还没有尝试过这个
  4. 有点类似于这个问题正在解决的问题,尽管我仍然有一些关于空字段的问题 - Autosaving Form with Jquery and PHP
  5. Sending the form through ajax

    任何输入都将不胜感激。 :)谢谢

0 个答案:

没有答案