【问题标题】:AngularJS: How to validate date format (DD/MM/YYYY) when manual enterAngularJS:手动输入时如何验证日期格式(DD/MM/YYYY)
【发布时间】:2016-03-28 13:42:23
【问题描述】:

我使用的是 Angular js 1.4 版本。我检查了这个link 并检查了正则表达式,但对我没有帮助。当我尝试“2013-11-33”(在上面的链接中)时,它的验证为真,这是错误的。

这是我的html

.. <div class="form-item">
    <!--<input required ng-model="dob" placeholder="Date of Birth* dd/mm/yyyy" class="textbox-n dob" type="text" onfocus="(this.type='date')" id="dobTxt" name="dobTxt" min="1910-01-01" max="2013-12-31">-->
    <input required ng-model="user.dob" placeholder="Date of Birth* dd/mm/yyyy" class="dob" type="text" id="dobTxt" name="dobTxt">    
</div> 
.....
<!--Validation Summary-->
                <div class="alert alert-danger validationSum" role="alert" style="margin-bottom: -20px;"
                     ng-show="submitted &&
                     (registerForm.genderSelect.$error.required
                     || registerForm.firstNameTxt.$error.required || registerForm.lastNameTxt.$error.required
                     || registerForm.dobTxt.$error.required || registerForm.dobTxt.$error.date
                     || registerForm.mobileTxt.$error.required
                     || registerForm.emailTxt.$error.required || registerForm.emailTxt.$error.email || (user.email != confirmEmail) || emailExist
                     || registerForm.pharmacySelect.$error.required)">
                    <ul>
                        <li ng-show="registerForm.genderSelect.$error.required">
                            Gender is required.
                        </li>
                        <li ng-show="registerForm.firstNameTxt.$error.required">
                            First name is required.
                        </li>
                        <li ng-show="registerForm.lastNameTxt.$error.required">
                            Last name is required.
                        </li>
                        <li ng-show="registerForm.dobTxt.$error.required">
                            Date of birth is required.
                        </li>
                        <li ng-show="registerForm.dobTxt.$error.date">
                            Not a valid date!
                        </li>
                        <li ng-show="registerForm.mobileTxt.$error.required">
                            Contact number is required.
                        </li>
                        <li ng-show="registerForm.emailTxt.$error.required">
                            Email is required.
                        </li>
                        <li ng-show="registerForm.emailTxt.$error.email">
                            Invalid email.
                        </li>
                        <li ng-show="isEmailMatched = (user.email != confirmEmail)">
                            Emails have to match!
                        </li>
                        <li ng-show="registerForm.pharmacySelect.$error.required">
                            Preferred pharmacy is required.
                        </li>
                        <li ng-show="emailExist">
                            This email has already been used to complete a questionnaire. Please contact your practitioner for your assessment.
                        </li>
                    </ul>
                </div>

问题是当我输入错误的日期时,它没有被解雇。我尝试了一些其他链接和 plunker 更改,但没有解决问题。

【问题讨论】:

  • 您可以尝试将输入更改为type="date"。这也将提供一个选择器。
  • 我试过了,但没有给出结果
  • @senschen——并非所有浏览器都支持输入日期类型。

标签: javascript angularjs validation date


【解决方案1】:

问题是您没有在任何地方验证user.dob。您只检查dobTxt 是否以日期的形式输入,但不检查该日期是否有效。 Herehere 是一些如何验证日期的示例。

【讨论】:

  • 这是在 ' || registerForm.dobTxt.$error.required || registerForm.dobTxt.$error.date' 这里,你的链接是javascript的,我想通过angular.js
  • Angular.js 是一个 JavaScript 框架。您的角度控制器是用 javascript 编写的,因此我提供的链接在这里有效且有用。 registerForm.dobTxt.$error.required 检查dobTxt 中是否有内容,registerForm.dobTxt.$error.date 检查是否为有效的日期格式,但不检查该日期是否为有效。您必须自己验证日期。
  • 我明白了,但是接下来我要做什么,如何通过函数检查格式。如果您对上述链接有疑问,请提出建议,即使用示例代码。
  • 链接中有示例代码。这就是我提供它们的原因。
猜你喜欢
  • 1970-01-01
  • 2014-01-18
  • 2022-11-29
  • 1970-01-01
  • 1970-01-01
  • 2017-04-07
  • 2016-01-02
  • 1970-01-01
  • 2013-07-06
相关资源
最近更新 更多