document.ready()的jQuery异常 - 对象不支持此属性或方法

时间:2012-07-10 19:51:38

标签: javascript jquery asp.net-mvc

我正在尝试执行一些简单的验证,我正在按照 JavaScript& jQuery,The Missing Manual 。我的代码就是这样:

<script src="~/Scripts/jquery-1.6.2.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>

<form> form code here </form>

<script>
    $(document).ready(function() {
        $('#vaporizerForm').validate();
    });
</script>

我收到了这个错误:

  

/scripts/jquery-1.6.2.js第15行第1039行未处理的异常

     

0x800a01b6 - Microsoft JScript运行时错误:对象不支持此属性或方法

如果我删除了$(document).ready部分,并且只是执行此操作,它可以工作:

<script>
        $('#vaporizerForm').validate();
</script>

知道为什么$(document).ready()部分不起作用?

编辑 - jQuery调用堆栈和代码

enter image description here

enter image description here

enter image description here

enter image description here

编辑 - 视图中的整个代码

@model IEnumerable<DistributorManagement.Models.Vaporizer>

@{
    ViewBag.Title = "Vaporizer";
}
@{
    var grid = new @WebGrid(
        source: Model,
        rowsPerPage: 10);
}

<script src="~/Scripts/jquery-1.6.2.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.validate.js" type="text/javascript"></script>

<script>
    $(document).ready(function () {
        $('#vaporizerForm').validate();
    });
</script>

<form action="#" method="post" name="vaporizerForm" id="vaporizerForm">
    <div>
        <label>Manufacturer</label>
        <input name="manufacturer" type="text" class="required" />

        <label>BuildDate</label>
        <input name="buildDate" type="text" class="required date" />

        <label>Rating</label>
        <input name="rating" type="text" class="required number" />
    </div>
    <div>
        <input type="submit" name="submit" value="Submit" />
    </div>
</form>

<br />
<h1>Vaporizer Info</h1>
<div class="webgrid-wrapper">
    <div id="grid">
        @grid.GetHtml(
            tableStyle: "webgrid",
            headerStyle: "webgrid-header",
            footerStyle: "webgrid-footer",
            alternatingRowStyle: "webgrid-alternating-rows",
            columns: grid.Columns(
                grid.Column("Id", "ID"),
                grid.Column("Manufacturer"),
                grid.Column("Status"),
                grid.Column("BuildDate", "Build Date"),
                grid.Column("Rating")))
    </div>
</div>

3 个答案:

答案 0 :(得分:2)

我会找到明显的答案,你确定~/Scripts/jQuery/jquery.validate.js的文件是否正常?它的行为就像那个文件是空的,或者坏了。

要检查文件是否正常,请导航到该目录,观察文件并在编辑器中打开它,是否有任何内容。

如果你拿出文件准备好的东西,你可能需要以下代码才能看到错误:

 try {
   $('#vaporizerForm').validate();
 }
 catch ()  {
   alert('still have error');
 }

答案 1 :(得分:0)

试试这个:

<script type="text/javascript" src="~/Scripts/jquery.validate.js"></script>

- 已编辑 -

将$(文件).ready(.......)放在页面底部。

对于某些版本的IE,当您的页面太长时,会发生这种情况....将它放在正文之前!

答案 2 :(得分:0)

将验证脚本放在<form>

之前
<script src="~/Scripts/jquery-1.6.2.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script>
  $(document).ready(function(){
    $('#vaporizeForm').validate();
  });
</script>

<form> form code here </form>

Here就是一个小提琴。