首页 > 解决方案 > 表单验证在使用 java 脚本的 codeigniter 中不起作用

问题描述

我正在使用 Java 脚本处理 Codeigniter 并验证表单,我的视图文件是

<div class="container">
    <div class="limiter">
        <div class="container-login100">
            <div class="wrap-login100 p-l-55 p-r-55 p-t-65 p-b-50" >
                <form class="login100-form" action="<?php echo base_url('index.php/Customer/addCustomer') ?>" method="post">
                    <h2 class="login100-form-title p-b-33"> Add Admin </h2>

                      <div class="form-group ">
                        <label class="control-label col-md-2 col-sm-6 col-xs-12" >First Name:</label>
                        <input class="input100" type="text"  id="first_name" placeholder="Enter first_name" name="first_name"/>
                        <span id="errorfirstname"></span>
                    </div>

                    <div class="container-login100-form-btn m-t-20">
                        <input type="submit" class="btn btn-dark login100-form-btn" id="save" name="save" value="Save" onclick="validation()"/>
                    </div>
                </form>
            </div>
        </div>
    </div>
</div>

和java脚本代码是

function validation() {
    if (document.getElementById("first_name").value == "") {
        var str = ("First Name may not be blank");
        document.getElementById("errorfirstname").innerHTML = str;
    } else if (document.getElementById("first_name") != /^[a-zA-Z ]*$/) {
        var str = ("Please Enter Only Characters in First name");
    } else if (document.getElementById("first_name")) {
        var inpObj = document.getElementById("first_name");
        if (inpObj.value.length <= 30 && inpObj.value.length >= 3) {
            var str = ("Please Type Minmum 3 Characters Maximum 30 Characters ");
            document.getElementById("errorfirstname").innerHTML = str;
        }
    } else {
        var str = "Input is Not valid";
        document.getElementById("errorfirstname").innerHTML = str;
    }
}

我的实际问题是,当我提交表单时,它在验证后在 javascript 上运行,它不会返回错误,但它会在控制器文件上运行,如果验证失败,我想在视图页面上返回,而不是在控制器上运行

标签: javascriptcodeigniter

解决方案


false如果没有通过,您必须返回验证。你也错过了一个return声明onclick。它应该要求像onclick="return validation();"

  function validateForm() {
    var x = document.forms["myForm"]["fname"].value;
    if (x == "") {
      alert("Name must be filled out");
      return false;
    }
  }

有关更多信息,请参阅此处:JS 验证

但是,我建议您使用现成的解决方案,例如Validate.jsParsley。它们经过试验和测试,涵盖了我们容易忘记的大多数极端情况,得到了数百名其他开发人员的认可,并节省了开发时间。


推荐阅读