' Bootsrap 4.0.0稳定'原因' Uncaught TypeError:无法读取属性' apply'未定义的。'

时间:2018-01-23 17:46:17

标签: jquery jquery-validate bootstrap-4

到目前为止,我一直在使用Bootstrap 4.0.0-beta2和插件jquery-Validate与1.17.0来验证表单数据。 那没关系。

现在我去了Bootstrap 4.0.0稳定'并得到以下错误:

jquery.validate.min.js:4 Uncaught TypeError: Cannot read property 'apply' of undefined.  Exception occurred when checking element idUserNameProvRegister, check the 'remote' method.
    at Function.a.ajaxPrefilter.a.ajax (jquery.validate.min.js:4)
    at a.validator.remote (jquery.validate.min.js:4)
    at a.validator.check (jquery.validate.min.js:4)
    at a.validator.element (jquery.validate.min.js:4)
    at a.validator.onfocusout (jquery.validate.min.js:4)
    at HTMLInputElement.b (jquery.validate.min.js:4)
    at HTMLFormElement.dispatch (jquery-3.2.1.slim.min.js:3)
    at HTMLFormElement.q.handle (jquery-3.2.1.slim.min.js:3)
    at Object.trigger (jquery-3.2.1.slim.min.js:3)
    at Object.simulate (jquery-3.2.1.slim.min.js:3)

问题似乎来自jquery-Validation插件所需的这部分代码:

  $("#idFormProvRegister").validate({

        rules:{
          UserNameProvRegister: {
                required:       true,
                length_username: true,
                alphanumeric:   true,

                remote: {   
                    url: "ajax/IstUserNameVergeben.php",
                    type: "post",
                    data: {
                        UserNameProvRegister: function(){
                            return $("#idUserNameProvRegister").val();
                        }
                    }              
                }
          },
  .....

除了这些cdns(新的Bootstrap版本需要)之外,我没有对自己的代码进行任何更改:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

   <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
   <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

在这两种情况下(&#39; BS 4.0.0 beta2&#39;以及&#39; BS 4.0.0稳定&#39;)我使用相同的jquery版本。 有人知道如何解决这个问题吗?

亨利

1 个答案:

答案 0 :(得分:2)

  1. 正在进行一些故障排除。安装插件的未缩小版本,以便可以将错误消息跟踪为可读的内容。

  2. 错误消息包含,“检查元素idUserNameProvRegister时出现异常,检查'远程'方法。”所以这应该缩小范围很长一段时间。

  3. 你安装了一个名为jQuery“Slim”的东西。我很确定这不是jQuery的完整版本。 (根据OP的评论,“苗条”不支持Ajax)

  4. 最后,data中的remote参数在这种情况下完全是多余的。默认情况下,remote方法会发送要验证的字段的值,因此无需指定它。