IE8中的对象预期JScript错误

时间:2012-11-01 15:06:37

标签: c# javascript jquery asp.net

主要是dis可能是重复的。但我不知道为什么我会收到这个错误。 我的剧本代码。

    $(document).ready(function () {        
            $(function () {
                $('input[name=Quantity]').blur(allownumbers);
            });

           function allownumbers() {
            alert('ad');
            var elements = document.getElementsByName('Quantity');
            alert(elements);
            for (var i = 0; i < elements.length; i++) {  
            if (elements[i].value == '' || elements[i].value < 1) {
                alert('Please enter a valid value');                    
                return false;
            }
            else if (elements[i].value > 100) {
                alert('Please enter a value less than 100');                
                return false;
            }
            }               
            return true;            
            }​
    });

我的网页代码:

   <input id="Quantity" type="text" class="TxtBox" name="Quantity" value="@item.Quantity" onblur="return allownumbers()" maxlength="3"/> 

我的脚本引用是

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

我的代码出了什么问题。有什么建议 .. 编辑:

当我不在文本框中调用它时,甚至都没有调用该函数。

2 个答案:

答案 0 :(得分:2)

您复制了脚本引用。您只需要包含一次脚本(最好是缩小版本,除非它是您正在主动调试和编写的脚本)。其次,初始化例程需要一些帮助。

$(document).ready(function () {        
        $('input[name=Quantity]').blur(allownumbers);
});

function allownumbers() {
        alert('ad');
        var elements = document.getElementsByName('Quantity');
        alert(elements);
        for (var i = 0; i < elements.length; i++) {  
        if (elements[i].value == '' || elements[i].value < 1) {
            alert('Please enter a valid value');                    
            return false;
        }
        else if (elements[i].value > 100) {
            alert('Please enter a value less than 100');                
            return false;
        }
        }               
        return true;            
        }​

现在,allownumbers不必在原始块之外,但对我而言,它有助于保持我的范围清洁。其次,$(document).ready确保您的文档可以使用,因此JQuery调用不需要$(function(){})。

因此,消除重复的脚本引用,你应该很好。

答案 1 :(得分:1)

你的allownumbers函数并不存在于全局范围内(它很好地包含在你最外面的ready处理程序中,这很好;全局范围已经被污染了),但是,通过onblur="..."字段标记上的Quantity属性连接旧式DOM0处理程序的地方正在寻找它。这就是为什么当这个领域模糊时,你会得到那个错误。

由于您之后已经通过jQuery正确地连接了它(在内部 ready处理程序中),只需从字段标记中完全删除onblur属性

其他说明:

  • 您正在使用ready两次:首先显式地,然后通过将函数引用传递给$隐式地在该回调中,这是同一事物的简写形式。您可以删除内部的内容,除了调用其中的函数外,它不会执行任何操作。

  • 您正在加载未经过缩小和缩小的脚本。选择一套,而不是两者。