2013-07-08 77 views
0

我想創建一些只有數字的文本框,這在JSfiddle但不在我的ASP.NET項目中測試時工作。代碼:ASP.NET jQuery不工作

母版頁頭:主要內容佔位符內

<head runat="server"> 
<title></title> 
<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" /> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script> 
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    jQuery.fn.ForceNumericOnly = 
      function() { 
       return this.each(function() { 
        $(this).keydown(function (e) { 
         var key = e.charCode || e.keyCode || 0; 
         return (
         key == 8 || 
         key == 9 || 
         key == 46 || 
         key == 110 || 
         key == 190 || 
         (key >= 35 && key <= 40) || 
         (key >= 48 && key <= 57) || 
         (key >= 96 && key <= 105)); 
        }); 
       }); 
      }; 

    $('input[id$=varA]').ForceNumericOnly(); 
    $("#varB").ForceNumericOnly(); 
    $("#varC").ForceNumericOnly(); 
</script> 

默認Web窗體:

<div id="addition" runat="server"> 
    <p> 
    Input variable a : <asp:TextBox runat="server" ID="varA"></asp:TextBox><br /><br /> 
    Input variable c : <asp:TextBox runat="server" ID="varB"></asp:TextBox><br /><br /> 
    Input variable b : <asp:TextBox runat="server" ID="varC"></asp:TextBox><br /><br /> 
    <asp:Button ID="additionSubmit" runat="server" Text="Submit" 
      onclick="additionSubmit_Click" /><br /><br /> 
    <asp:Label ID="lblAddition" runat="server" Text="" CssClass="label"></asp:Label> 
    </p> 
</div> 
+2

您包括jQuery的兩倍,刪除jQuery的1.4.1.min.js線 –

回答

1

其他的答案已經提及的document.ready包裹這一點;這就解決了部分問題。

請注意,ASP.net可能會改變您的文本框的ID。你已經在第一個照顧:

$('input[id$=varA]').ForceNumericOnly(); 

但不是其他兩個。你也可以爲其指定特定的CSS類(ASP.net不會改變),或設置的ClientIDMode爲「靜態」:

<div id="addition" runat="server"> 
    <p> 
     Input variable a : <asp:TextBox ClientIDMode="Static" runat="server" ID="varA"></asp:TextBox><br /><br /> 
     Input variable c : <asp:TextBox ClientIDMode="Static" runat="server" ID="varB"></asp:TextBox><br /><br /> 
     Input variable b : <asp:TextBox ClientIDMode="Static" runat="server" ID="varC"></asp:TextBox><br /><br /> 
     <asp:Button ID="additionSubmit" runat="server" Text="Submit" 
      onclick="additionSubmit_Click" /><br /><br /> 
     <asp:Label ID="lblAddition" runat="server" Text="" CssClass="label"></asp:Label> 
    </p> 
</div> 
+0

謝謝,這個工作。因爲我在同一頁面中有3個以上的文本框,所以使用CSS類就像你建議的那樣。 – user1986761

0

你必須等待,直到你的DOM是真的準備好執行腳本。試着用:

$(document).ready(function() { 
    $('input[id$=varA]').ForceNumericOnly(); 
    $("#varB").ForceNumericOnly(); 
    $("#varC").ForceNumericOnly(); 
}); 
0

嘗試修改你的腳本成爲:

$(document).ready(function() { 
    $('input[id$="varA"]').ForceNumericOnly(); 
    $('input[id$="varB"]').ForceNumericOnly(); 
    $('input[id$="varC"]').ForceNumericOnly(); 
}); 
0

這裏是工作的解決方案,只用一個jQuery庫。

使用$(document).ready和jQuery中使用的ClientID像<%= VarA.ClientID %>

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title></title> 
    <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" /> 
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     jQuery.fn.ForceNumericOnly = 
      function() { 
       return this.each(function() { 
        $(this).keydown(function (e) { 
         var key = e.charCode || e.keyCode || 0; 
         return (
         key == 8 || 
         key == 9 || 
         key == 46 || 
         key == 110 || 
         key == 190 || 
         (key >= 35 && key <= 40) || 
         (key >= 48 && key <= 57) || 
         (key >= 96 && key <= 105)); 
        }); 
       }); 
      }; 
      $(document).ready(function() { 
       $('#<%= varA.ClientID %>').ForceNumericOnly(); 
       $("#<%= varB.ClientID %>").ForceNumericOnly(); 
       $("#<%= varC.ClientID %>").ForceNumericOnly(); 
      }); 
    </script> 
</head> 
<body> 
    <form runat="server"> 
    <div id="addition" runat="server"> 
     <p> 
      Input variable a : 
      <asp:TextBox runat="server" ID="varA"></asp:TextBox><br /> 
      <br /> 
      Input variable c : 
      <asp:TextBox runat="server" ID="varB"></asp:TextBox><br /> 
      <br /> 
      Input variable b : 
      <asp:TextBox runat="server" ID="varC"></asp:TextBox><br /> 
      <br /> 
      <asp:Button ID="additionSubmit" runat="server" Text="Submit" onclick="additionSubmit_Click"/><br /> 
      <br /> 

      <asp:Label ID="lblAddition" runat="server" Text="" CssClass="label"></asp:Label> 
     </p> 
    </div> 
    </form> 
</body> 
</html>