具体5-8.2.1 php jQuery多表单验证冲突

时间:2017-12-03 08:55:29

标签: php jquery ajax forms concrete5-8.x

我在页面上有多个表单(数字可能会有所不同,具体取决于用户添加到页面的表单块数量)。有2个表单验证文件:view.js - 这是用户端,controller.php - 是服务器端。表单位于view.php中。

我可以从控制器向每个表单和字段添加唯一的块ID。每次放置新块时ID都会更改。因此,没有任何东西可以直接访问,例如$('#name123')。

问题是:

  1. jQuery如何知道需要处理哪些表单?如果在此之前身份证号码未知,怎么知道哪个提交按钮被按下了?

  2. 即使我发现尝试提交哪个表单,控制器生成的唯一块ID如何由jQuery处理?也就是说,如果我在一个页面上有3个表单,jQuery怎么知道哪个输入元素发出信号(例如模糊)?

  3. 谢谢。

    一些view.php代码:

    <form id="contact_form<?php echo $bUID; ?>" 
        enctype="multipart/form-data" 
        action="<?php echo $formAction?>" 
        method="post" 
        accept-charset="utf-8">
    
        <h2><?php echo $form_title; ?></h2>
        <h2><?php echo $bUID; ?></h2>
        <!--<input type="hidden" name="bUID" data-buid="<?php echo $bUID; ?>">-->
    
        <div class="form-group">
            <?php 
                echo $form->label('name', $entry_name);
                echo $form->text('name'.$bUID, $name, array ('maxlength'=>"50", 'required'=>"required", 'data-buid'=>$bUID));
                echo '<div id="tip-name'.$bUID.'" class="tip-name tip">' . $entry_name_tip . '</div>';
                echo '<div id="error-name'.$bUID.'" class="error-name tip hidden">' . $error_name . '</div>';
            ?>
        </div>
    

    一些view.js代码:

    $(document).ready(function(e) {
        var bUID;
    
        $('form').submit(function(event){
            bUID = $(this).data("buid");
            event.preventDefault();
            submitForm(bUID);
        });
    
        $('input[type=text]').blur(function() {
            bUID = $(this).data("buid");
            if (!$('#name'+bUID).val() || $('#name'+bUID).val().length < 2 || $('#name'+bUID).val().length > 60) {
                $('#error-name'+bUID).removeClass("hidden");
                $('#tip-name'+bUID).addClass("hidden");
                $('#name'+bUID).addClass("problem");
                return false;
            }
            else {
                $('#error-name'+bUID).addClass("hidden");
                $('#tip-name'+bUID).removeClass("hidden");
                $('#name'+bUID).removeClass("problem");
                return true;
            }
        });
    

0 个答案:

没有答案