Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态生成的html表单don';不允许jQuery绑定(“提交”)方法_Html_Jquery_Dynamicform - Fatal编程技术网

动态生成的html表单don';不允许jQuery绑定(“提交”)方法

动态生成的html表单don';不允许jQuery绑定(“提交”)方法,html,jquery,dynamicform,Html,Jquery,Dynamicform,我有以下动态生成的表单,其中一些复选框有隐藏的输入字段,当用户选中特定的复选框时会显示这些字段。 我在这里需要一些要求: 保存表单前至少选中一个复选框 要检查隐藏的输入是否已显示,则不应为空 如果用户使用“+”图标单击添加新输入框,则新添加的输入字段也必须填充 如果满足上述所有要求,则用户可以提交表格 <form method="post" action="fakeUrl" id="objectionsFrm" class=

我有以下动态生成的表单,其中一些复选框有隐藏的输入字段,当用户选中特定的复选框时会显示这些字段。 我在这里需要一些要求:

  • 保存表单前至少选中一个复选框
  • 要检查隐藏的输入是否已显示,则不应为空
  • 如果用户使用“+”图标单击添加新输入框,则新添加的输入字段也必须填充
  • 如果满足上述所有要求,则用户可以提交表格

       <form method="post" action="fakeUrl" id="objectionsFrm" class="objFrm">
       <input type="hidden" name="ins_sno" id="ins_sno" value="<?php echo($ins_sno); ?>">
       <strong>Title:</strong> <strong class="text-danger">
        <table class="table table-responsive obj_tbl">
        <tbody>
            <?php $counter = 0; foreach($db->getRecordSet($sql) as $obj){ $counter +=1;?>
            <?php if(isset($obj["do_blanks"]) && !empty($obj["do_blanks"])){ $input_hide_show = 1; }else{$input_hide_show = 0;}?>
                <tr>
                    <td><input type="checkbox" onchange="inputBoxShow('<?php echo($input_hide_show);?>','<?php echo(intval($obj['sno']));?>');" name="chk<?php echo($obj["sno"]);?>" id="chk<?php echo($obj["sno"]);?>" value="<?php echo($obj['sno']); ?>"></td>
                    <td> <label for="chk<?php echo($obj["sno"]);?>"><?php echo($obj['lbl_title']); ?></label>
                     <?php if(null != intval($obj["do_blanks"]) && intval($obj["do_blanks"]) == 1){?>
                            <input type="text" required placeholder="Type objection details here..." id="blanks_<?php echo($obj["sno"]);?>" name="blanks_<?php echo($obj["sno"]);?>" class="form-control obj-input">
                     <?php } ?>
                     </td>
                </tr>
                <?php }//foreach()  ?>
            </tbody>
        </table>
           <div><i onclick="add_new_obj();" class="fa fa-plus-circle text-success" style="font-size:16px;cursor:pointer;padding-left:3px;"></i></div>
           <div>Return Date</div>
           <div>
                <input type="text" name="return_date" readonly id="return_date" value="<?php echo(date('Y-m-d',strtotime("+10 days"))); ?>" class="form-control">
           </div>
           <div><input type="submit" name="btnSave" id="btnSave" value="Return With Objection(s)" class="btn btn-danger"></div>
           <span id="rst"></span>          
    </form>
    
    
    
    我不是JS方面的专家,但我相信on
    ready
    事件只有在加载标记时才起作用,不应该执行任何Javascript代码。on
    load
    事件可能适用于某些情况

    不过,更好的方法是在建议的评论中使用事件授权。使用它的方式是,选择一个嵌套元素的共同祖先(
    body
    几乎每次都有效),在事件类型(例如
    submit
    )之后,元素的选择器将跟随

        $("body").on("submit", "form#objectionsFrm",function(ev){
            ev.preventDefault();
                $.ajax({
                    url: 'ajaxPhp/saveObjectionsToCase.php',
                    data: new FormData($('form#objectionsFrm')[0]),
                    type:"POST",
                    cache: false,
                    dataType: 'json',
                    success: function(t){
                            if(t['flag'] == 1){
                                    alert('done');
                                   }
                            else{
                                alert('not done');                                                               
                                }
                            },
                    error: function(xhr){
                        $("#rst").html('Error: - '+xhr.status+'</strong>');
                        }
                    });
        })
    
    $(“body”)。在“提交”、“表#目标FRM”上,功能(ev){
    ev.preventDefault();
    $.ajax({
    url:'ajaxPhp/saveObjectionsToCase.php',
    数据:新的FormData($('form#objectionsFrm')[0]),
    类型:“POST”,
    cache:false,
    数据类型:“json”,
    成功:功能(t){
    如果(t['flag']==1){
    警报(“完成”);
    }
    否则{
    警报(“未完成”);
    }
    },
    错误:函数(xhr){
    $(“#rst”).html('Error:-'+xhr.status+'');
    }
    });
    })
    
    您可以委托提交事件:$(文档)。在(“提交”、“表单#objectionsFrm”、函数(ev){@gaetanoM我也尝试过,但我确信我这样做的方式是错误的……不确定如何使用这种方式……我只是检查了”console.log($。#(“表单”)[0],“事件”);”它显示提交事件已绑定,但为什么它不起作用。您是否收到任何控制台消息?您是否尝试登录到“.on('submit')”中以证明它不在其中?那里的ajax调用是否会悄悄失败?事实上,我是用其他方法实现的。但您的解决方案非常棒……很高兴我能提供帮助!
        $("body").on("submit", "form#objectionsFrm",function(ev){
            ev.preventDefault();
                $.ajax({
                    url: 'ajaxPhp/saveObjectionsToCase.php',
                    data: new FormData($('form#objectionsFrm')[0]),
                    type:"POST",
                    cache: false,
                    dataType: 'json',
                    success: function(t){
                            if(t['flag'] == 1){
                                    alert('done');
                                   }
                            else{
                                alert('not done');                                                               
                                }
                            },
                    error: function(xhr){
                        $("#rst").html('Error: - '+xhr.status+'</strong>');
                        }
                    });
        })