【问题标题】:Form validation in angularjs (ionic) doesn't work for meangularjs(离子)中的表单验证对我不起作用
【发布时间】:2014-12-17 17:50:18
【问题描述】:

我想达到什么目标?

我有一个表单,其中包含具有某些类型且是必需的输入。每当用户单击“提交”时,我想检查表单是否通过验证。

这是一个最低限度的演示,展示了我在多大程度上完成了所有工作:http://jsbin.com/gokewosoti/13/edit(已更新解决方案)

我创建了名为doForm 的提交处理程序,它处理提交按钮上的点击事件。 在里面我可以访问变量theForm(表单的名称)。

根据某些消息来源 (http://blog.brunoscopelliti.com/form-validation-the-angularjs-way),我应该能够执行 theForm.$valid 并获得一个布尔值来显示表单是否有效。事实证明这是行不通的。

当我运行一些繁琐的代码时它确实有效: formy = angular.element(theForm).scope().theForm 然后突然formy.$valid 起作用了。

我做错了什么?

更新(已解决)

感谢标记答案的解决方案:http://jsbin.com/gokewosoti/14/edit

【问题讨论】:

    标签: javascript angularjs validation ionic-framework


    【解决方案1】:

    您需要将表单传递给您正在调用的函数。

    所以你的提交按钮代码需要改成这个

    <input type='submit' value='submit' ng-click='doForm(theForm)' />
    

    你的 doForm 函数需要改成这个

    $scope.doForm = (theForm) ->
    

    您需要删除此部分以清除控制台中的错误

      formy = angular.element(theForm).scope().theForm
    
      if formy.$valid == true
        console.log "Wrong is valid"
      else
        console.log "Wrong is not valid"
    

    所以你的完整提交函数如下所示

    $scope.doForm = (theForm) ->
      # Here `theForm` is an html element, not a 
      # angular-ised object
    
      # So this doesn't work:
      if theForm.$valid == true
        console.log "I am valid"
      else
        console.log "Form isn't valid"
    

    请注意,您需要在最后一个输入框中输入有效的电子邮件地址格式才能正确验证。

    【讨论】:

    • 非常感谢!您是否知道视图中的 theForm 变量和控制器中的变量之间有什么区别?
    • 我还有一个与 ionicframework 相关的问题。我怎样才能从标题中触发doForm(theForm)?似乎theForm 不适用于ion-content 标签之外的东西。这在此处进行了说明:jsbin.com/teruru/2/edit
    • 我不认为您将theForm 声明为您范围内的变量,因此它不存在,您也不应该这样做。只需将表单传递给您的提交功能,一切都很好。然后通过提交函数中的 ng-model 访问表单输入。祝你好运!
    • 感谢您的回复。我的意思是,当我按“做”(在我评论中提到的链接中)时,我无法访问theForm,所以我无法通过它。因此,当您在 jsbin 中打开控制台时会看到“表单不存在”。
    • 我明白你现在在问什么。以下是它的工作原理:jsbin.com/keqiyo/2/edit?html,js,output 您需要将表单设置为范围变量,并且可以使用表单内部 div 中的 ng-init 执行此操作,该函数调用函数以在 $scope 变量中设置表单。然后你可以调用一个'doForm'函数而不用担心传入任何东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2017-07-23
    相关资源
    最近更新 更多