2012-11-01 38 views
-1

大多數dis可能可能是重複的。但我不知道爲什麼我會得到這個錯誤。 我的腳本代碼。
IE8中的對象期望的JScript錯誤

$(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

呃......爲什麼你要加載每個組件兩次:首先它的完整版本,然後縮小的一個? – raina77ow

+0

-1。什麼行引發錯誤?並使用體面的瀏覽器來調試JavaScript錯誤。 –

+0

onblur =「return allownumbers()」在我的視圖中引發錯誤並更改我的負載組件。檢查我的編輯。 – kk1076

回答

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(){})不是必需的。

所以消除重複的腳本引用,你應該很好。

+0

*「現在,所有顯示的數字不必超出原始模塊的範圍,但對我而言,這有助於保持我的顯示範圍清潔。」*實際上,情況恰恰相反:它進一步污染了全球範圍。 –

+0

如何防止和恢復文本框中的值?像dis document.getElementById(「Quantity」)。defaultValue; ,如何在dis代碼中使用。 ?? – kk1076

+0

@ kk1076:這是一個完全不同的問題。建議單獨詢問。 (順便說一下:它是「這個」,而不是「dis」。使用正確的大寫字母,標點符號和拼寫可以讓人們更容易理解和幫助你。如果你在掙扎,可能是同事,拼寫檢查工具,谷歌翻譯等等。可以幫助。) –

1

您的allownumbers函數在全局作用域中不存在(它很好地包含在最外層的ready處理程序中,這很好;全局作用域已經被污染了),但這正是舊式DOM0處理程序通過Quantity字段的標記正在尋找它的onblur="..."屬性。這就是爲什麼當領域模糊時,你會得到這個錯誤。

既然你已經通過jQuery正確掛接起來以後(在你ready處理),只是刪除onblur從外地標記屬性完全。

其他說明:

  • 您使用ready兩次:第一次明確,然後再該回調裏面隱含地傳遞一個函數引用到$,這是同樣的事情的簡寫形式。你可以刪除內部函數,除了調用內部函數以外,沒有其他任何操作。

  • 您正在加載未經縮小和縮小的腳本。挑一套,不是兩套。

相關問題