-1

大多数情况下 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">

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

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

4

2 回答 2

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 () {})。

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

于 2012-11-01T15:12:53.410 回答
1

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

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

其他注意事项:

  • 您使用ready了两次:首先是显式地使用,然后是通过将函数引用传递给 来隐式地在回调中使用$,这是同一事物的简写形式。您可以删除内部的,除了调用其中的函数之外,它什么也不做。

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

于 2012-11-01T15:12:12.310 回答