当前位置: 首页 > 面试题库 >

angularjs ng-minlength验证不起作用,仍在提交表单

诸葛煜
2023-03-14
问题内容

我正在尝试仅在成功验证后提交表格。验证适用于必填项,但不适用于ng-minlength

表单输入无效,但仍在提交表单。

<form name="myForm" ng-submit="count = count + 1" ng-init="count=0" ng-app>
 <div class="control-group" ng-class="{error: myForm.mobile.$invalid}">
        <label class="control-label" for="mobile">Mobile</label>
        <div class="controls">
            <input type="text" name="mobile" placeholder="07XXXXXXXXX" ng-model="mobile" ng-minlength="11"  required />
            <span ng-show="myForm.mobile.$error.required" class="help-inline">Required</span>
            <span ng-show="myForm.mobile.$error.minlength" class="help-inline">Mobile number should be minimum 11 character starting from 07</span>           
        </div>
    </div>

     <div class="control-group">
        <div class="controls">                       
            <input  class="btn" type="submit" value ="submit" />
        </div>

         count: {{count}}<br />

<tt>myForm.$invalid = {{myForm.$invalid}}</tt><br/>
    </div>
</form>

http://jsfiddle.net/pMMke/9/

我究竟做错了什么。

我不想使用提交按钮禁用方法。


问题答案:

这是您做错的事情:您正在混合使用两个概念Angular验证器
和 HTML5验证器。

需要 HTML5验证,例如,规定:

如果存在,它指定提交表单之前必须填写输入字段。

因此,如果您尝试提交具有此属性输入的表单,它将向用户显示一条解释此消息的消息,并且将阻止发送表单。这是您想要的行为。为什么不为 ng-
minlength工作
?因为 ng-minlength 是Angular验证器(您可以知道,因为它以 ng-开头
),并且它没有在表单中添加任何特殊行为。它只是将输入所在的位置设置为无效(因此也就是表单),然后让您决定如何处理它。

您可以选择:您可以使用 模式 HTML5验证器,以指定该字段至少需要11个字符。它将是这样的:

<input type="text" pattern=".{11,}">

因此,当您提交包含此输入的表单时,如果用户输入的字符少于11个,则不会发送该表单。

但是既然如此,您已经在使用 模式 验证器,则可以充分利用正则表达式,并定义如下内容:

<input type="text" pattern="07[0-9]{9}" />

它将只接受11个字符的值,以“
07”开头且仅包含数字。我已经修改了您的小提琴以向您展示它如何工作:http :
//jsfiddle.net/helara/w35SQ/



 类似资料:
  • 问题内容: 我使用bassistance.de的jQuery验证程序插件(1.11)并通过php提交。现在,我在javacript代码的末尾的提交处理程序中添加了一个ajax调用,但是该调用不起作用,firebug控制台也不存在。 案例1 如果我在网站的开头放置了ajax调用,它可以工作,但是不再可以看到验证器插件。 案例2 如果我将调用放入提交处理程序中,则该调用不存在,并且表单由php提交。

  • 问题内容: 我正在尝试通过AJAX提交表单,而不是使用常规的POST提交。HTML只是一个标准格式,我的jQuery代码如下: (基于此答案) 我从Submit函数返回false,但是表单仍在提交,我不知道为什么。没有收到任何Firebug错误。 问题答案: 如果html设置正确,则您的代码可以正常工作。这是我的测试html(使用php),因此您可以将其与自己的进行比较。

  • 我正在按照本指南使用Spring表单验证,但我无法在自己的程序中验证表单。我完全按照指南中的描述去做,但在我的应用程序中却不起作用。 我使用Spring Tools Suite并下载了示例应用程序,以查看它是否真的可以工作。我看不出究竟是什么原因导致表单验证发生在示例应用程序中而不是我的应用程序中。我试图通过从POM中移除依赖项来缓慢地更改示例应用程序,以使其中断,但它继续工作.....到底是哪个

  • 本文向大家介绍jQuery EasyUI提交表单验证,包括了jQuery EasyUI提交表单验证的使用技巧和注意事项,需要的朋友参考一下 EasyUI的form表单里面的验证框,先讲解下validatebox类和相关的属性。 验证规则 验证规则是通过使用 required 和 validType 特性来定义的, 这里是已经实施的规则: email:匹配 email 正则表达式规则,系统提供的属性

  • 我有一个来自WordPress的contact-template.php文件... 表单有4个必填字段... 现在,如果任何或所有必填字段为空,表单将不会提交,用户将在每个为空的文本输入字段下面得到“此字段是必填的”消息。-这完全是我想要的 我遇到的问题是,当填写所需的字段,并点击“提交”按钮时,会有10-15秒的停顿,然后显示“谢谢你,我们会尽快回复你”的消息。 由于这种暂停,用户会多次单击su

  • 我想测试用户是否在模式 ##-#- 中输入了任何字符或数字#### 我的表达式是 ^(\w){4}-(\w){2}-(\w){3}-(\w){4}$,似乎在联机测试人员中有效,但在我的验证表达式中不起作用! 有什么想法吗? 这是我的代码(getComponentValye是我自己获取值的函数)…