使用一个jquery文件在一个php页面中验证3个表单

时间:2016-02-07 12:29:49

标签: php jquery forms validation

我在同一个php页面中有3个表单。每个表单包含相同的输入字段(具有不同的名称)。提交后每个表单的操作也不同。一个用于在db中插入新记录,另一个用于更新相同记录,最后一个用于删除该记录。

我想在一个jquery脚本中验证所有这些。所以,我这样做了:

形式:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
<!-- jQuery Validation Plugin 
hosted by Google API -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<!-- jQuery Library -->
<script type="text/javascript" src="jquery.validate.min.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script type="text/javascript" src="test.js"></script>
<script type="text/javascript">
$(document).ready(function(){  

    $('#showadd').click(function() {
                $('.add').toggle("slide");
                $('.update').hide();
                $('.delete').hide();
        });

    $('#showupdate').click(function() {
                $('.update').toggle("slide");
                $('.add').hide();
                $('.delete').hide();
        });

    $('#showdelete').click(function() {
                $('.delete').toggle("slide");
                $('.update').hide();
                $('.add').hide();
        });

    $('input.text').keyup(function () {
        $('input.link').prop('disabled', this.value.length === 0 ? false : true);
        $('input.evidence').prop('disabled', this.value.length === 0 ? false : true);
    });

    $('input.link').keyup(function () {
        $('input.text').prop('disabled', this.value.length === 0 ? false : true);
        $('input.evidence').prop('disabled', this.value.length === 0 ? false : true);
    });

    $(".evidence").on("change", function(){
          if($.trim($(".evidence").val())){
            $('.link').attr("disabled", "disabled");
            $('.text').attr("disabled", "disabled");
        }else{$('.link').removeAttr('disabled');$('.text').removeAttr('disabled');}
    });
});
</script>
</head>
<body>
<div id="showadd">Add Evidence</div>
    <br>
    <div class="add" style="display:none">
      <form action="institutionLevel.php" method="post" enctype="multipart/form-data" id="inst-form" novalidate>
          <div class="formLayout">
          <div class="required">
          <label>Evidence Category</label>
          <select name="category">
          <option value="none"></option>
          <option value="Mission Goals and Objectives">Mission, Goals and Objectives</option>
          <option value="Governance and Administration">Governance and Administration</option>
          <option value="Management of Quality Assurance and Improvement">Management of Quality Assurance and Improvement</option>
          <option value="Learning and Teaching">Learning and Teaching</option>
          <option value="Student Administration and Support Services">Student Administration and Support Services</option>
          <option value="Learning Resources">Learning Resources</option>
          <option value="Facilities and Equipment">Facilities and Equipment</option>
          <option value="Financial Planning and Management">Financial Planning and Management</option>
          <option value="Employment Processes">Employment Processes</option>
          <option value="Research">Research</option>
          <option value="Relationships with the Community">Relationships with the Community</option>
          </select>
          </div>
          <br>
          <div class="required">
            <label>Evidence Title</label>
            <input type="text" name="title"/>
          </div>
          <br>
          <div class="required">
          <label>Evidence File</label>
          <input type="file"  name="evidence" id="evidenceToUpload" class="evidence"> 
          <label id="evidenceSize"></label> 
          </div>
          <br>
          <div class="required">
          <label>Evidence Link</label>
          <input type="text" name="eviLink" class="link"/>
          </div>
          <br>
          <div class="required">
          <label>Physical Evidence</label>
          <input type="text" name="eviText" class="text"/>
          </div>
          <br>
        <input type="submit" name="add" value="Add" class="styled_button"/>
         </div>
      </form>
      <br>
    </div>
    <div id="showupdate">Update Evidence</div>
    <br>
    <div class="update" style="display:none">
      <form action="institutionLevel.php" method="post" enctype="multipart/form-data" id="inst-form" novalidate>
          <div class="formLayout">
          <div class="required">
          <label>Evidence Category</label>
          <select name="category_update">
          <option value="none"></option>
          <option value="Mission Goals and Objectives">Mission, Goals and Objectives</option>
          <option value="Governance and Administration">Governance and Administration</option>
          <option value="Management of Quality Assurance and Improvement">Management of Quality Assurance and Improvement</option>
          <option value="Learning and Teaching">Learning and Teaching</option>
          <option value="Student Administration and Support Services">Student Administration and Support Services</option>
          <option value="Learning Resources">Learning Resources</option>
          <option value="Facilities and Equipment">Facilities and Equipment</option>
          <option value="Financial Planning and Management">Financial Planning and Management</option>
          <option value="Employment Processes">Employment Processes</option>
          <option value="Research">Research</option>
          <option value="Relationships with the Community">Relationships with the Community</option>
          </select>
          </div>
          <br>
          <div class="required">
            <label>Evidence Title</label>
            <input type="text" name="title_update"/>
          </div>
          <br>
          <div class="required">
          <label>Evidence File</label>
          <input type="file"  name="evidence_update" id="evidenceToUpload_update" class="evidence"> 
          <label id="evidenceSizeUpdate"></label> 
          </div>
          <br>
          <div class="required">
          <label>Evidence Link</label>
          <input type="text" name="eviLink_update" class="link"/>
          </div>
          <br>
          <div class="required">
          <label>Physical Evidence</label>
          <input type="text" name="eviText_update" class="text"/>
          </div>
          <br>
        <input type="submit" name="update" value="Update" class="styled_button"/>
         </div>
      </form>
      <br>
    </div>
    <div id="showdelete">Delete Evidence</div>
    <br>
    <div class="delete" style="display:none">
      <form action="institutionLevel.php" method="post" enctype="multipart/form-data" id="inst-form" novalidate>
          <div class="formLayout">
          <div class="required">
          <label>Evidence Category</label>
          <select name="category_delete">
          <option value="none"></option>
          <option value="Mission Goals and Objectives">Mission, Goals and Objectives</option>
          <option value="Governance and Administration">Governance and Administration</option>
          <option value="Management of Quality Assurance and Improvement">Management of Quality Assurance and Improvement</option>
          <option value="Learning and Teaching">Learning and Teaching</option>
          <option value="Student Administration and Support Services">Student Administration and Support Services</option>
          <option value="Learning Resources">Learning Resources</option>
          <option value="Facilities and Equipment">Facilities and Equipment</option>
          <option value="Financial Planning and Management">Financial Planning and Management</option>
          <option value="Employment Processes">Employment Processes</option>
          <option value="Research">Research</option>
          <option value="Relationships with the Community">Relationships with the Community</option>
          </select>
          </div>
          <br>
        <input type="submit" name="delete" value="Delete" class="styled_button"/>
         </div>
      </form>
      <br>
      <br>
    </div>
</body>
</html>

Jquery的:

// JavaScript Document
//jQuery Form Validation code

(function($,W,D)
{
    var JQUERY4U = {};

    JQUERY4U.UTIL =
    {
        setupFormValidation: function()
        {
            //form validation rules

    // Setup form validation on the #register-form element
    $("#inst-form").validate({
        errorElement: 'div',
        // Specify the validation rules
        rules: {
            category: 
            {
            checkEviCategory: true,
            },
            title: 
            {
            required: true,
            },
            evidence:
            {
                accept: "pdf",
                required: true,
                checkEvidence: true,
            },
            eviLink:{
                required: true,
            },
            eviText:
            {
            required: true, 
            },

            category_update: 
            {
            checkEviCategory: true,
            },
            title_update: 
            {
            required: true,
            },
            evidence_update:
            {
                accept: "pdf",
                required: true,
                checkEvidenceUpdate: true,
            },
            eviLink_update:{
                required: true,
            },
            eviText_update:
            {
            required: true, 
            },

        },

        // Specify the validation error messages
        messages: {
            title: 
            {
            required: "Enter evidence title",
            },
            EviLink: 
            {
            required: "Enter evidence link",
            },
            EviText: 
            {
            required: "Enter the physical location‬‏ of the evidence",
            },
            evidence:{
            accept: "Upload pdf document only",
            required: "Upload ..",
            },

            title_update: 
            {
            required: "Enter evidence title",
            },
            eviLink_update: 
            {
            required: "Enter evidence link",
            },
            eviText_update: 
            {
            required: "Enter the physical location‬‏ of the evidence",
            },
            evidence_update:{
            accept: "upload pdf document only",
            required: "Upload ..",
            },
            },

        submitHandler: function(form) {
            form.submit();
                }
            });

            jQuery.validator.addMethod('checkEviCategory', function (value) {
        return (value != 'none');
    }, "Select evidence category");

jQuery.validator.addMethod('checkEvidence', function () {
    if(!$("#evidenceToUpload").val() == '')
    {   
    var iSize = ($("#evidenceToUpload")[0].files[0].size / 1024); 
     if (iSize / 1024 > 1) 
     { 
        if (((iSize / 1024) / 1024) > 1) 
        { 
            iSize = (Math.round(((iSize / 1024) / 1024) * 100) / 100);
            $("#evidenceSize").html( iSize + " GB"); 
        }
        else
        { 
            iSize = (Math.round((iSize / 1024) * 100) / 100)
            $("#evidenceSize").html( iSize + " MB"); 
        } 
     } 
     else 
     {
        iSize = (Math.round(iSize * 100) / 100)
        $("#evidenceSize").html( iSize  + " KB"); 
     }   
     return (iSize<4294967295);  // 4GB is 4,294,967,295 bytes
    }
    return true;
    }, "File exceeded 4GB");

    jQuery.validator.addMethod('checkEvidenceUpdate', function () {
    if(!$("#evidenceToUpload_update").val() == '')
    {   
    var iSize = ($("#evidenceToUpload_update")[0].files[0].size / 1024); 
     if (iSize / 1024 > 1) 
     { 
        if (((iSize / 1024) / 1024) > 1) 
        { 
            iSize = (Math.round(((iSize / 1024) / 1024) * 100) / 100);
            $("#evidenceSizeUpdate").html( iSize + " GB"); 
        }
        else
        { 
            iSize = (Math.round((iSize / 1024) * 100) / 100)
            $("#evidenceSizeUpdate").html( iSize + " MB"); 
        } 
     } 
     else 
     {
        iSize = (Math.round(iSize * 100) / 100)
        $("#evidenceSizeUpdate").html( iSize  + " KB"); 
     }   
     return (iSize<4294967295);  // 4GB is 4,294,967,295 bytes
    }
    return true;
    }, "File exceeded 4GB");
}}
    //when the dom has loaded setup form validation rules
    $(D).ready(function($) {
        JQUERY4U.UTIL.setupFormValidation();
    });

})(jQuery, window, document);

结果:

只验证第一张表格!!

如何 修复 这是最简单的原因(最少的更改)。

另外,我是jquery的初学者,我讨厌动态分配规则和消息(我在同一个案例中找到了答案)。

1 个答案:

答案 0 :(得分:0)

ID对于页面上的每个元素都是唯一的,将您的ID更改为唯一,然后您可以添加一个特定的类并调用它来进行验证,而不是ID。只要该类附加到所有3个表单并且验证也是如此,那么它应该可以工作。

例如

    <form action="institutionLevel.php" method="post" enctype="multipart/form-data" class="inst-form" id="form1" novalidate>

   <form action="institutionLevel.php" method="post" enctype="multipart/form-data" class="inst-form" id="form2" novalidate>

   <form action="institutionLevel.php" method="post" enctype="multipart/form-data" class="inst-form" id="form3" novalidate>

这是一个如何调用表单的示例(显然不是那样的行)然后您的验证将是:

 $(".inst-form").validate({

这可能会引起问题,我不太确定,因为我没有测试过它。