主要是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">
我的代码出了什么问题。有什么建议 .. 编辑:
当我不在文本框中调用它时,甚至都没有调用该函数。
答案 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
两次:首先显式地,然后通过将函数引用传递给$
隐式地在该回调中,这是同一事物的简写形式。您可以删除内部的内容,除了调用其中的函数外,它不会执行任何操作。
您正在加载未经过缩小和缩小的脚本。选择一套,而不是两者。