0

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

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

问题是:

  1. jQuery 如何知道哪些表单需要处理?如果在此之前 ID 号未知,它如何知道按下了哪个提交按钮?

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

谢谢你。

一些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;
        }
    });
4

0 回答 0