2014-07-07 96 views
0

我无法调用外部jquery文件。与aspx页面相同的代码正在工作,但外部js不工作。请帮助 -无法调用外部jquery文件

我的aspx页面代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="loginvalidation.Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script> 
    <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js" type="text/javascript"></script> 
    <script src="http://jquery.bassistance.de/validate/additional-methods.js" type="text/javascript"></script> 
    <script src="JScript1.js" type="text/javascript"></script> 

</head> 
<body"> 
    <form id="form1" runat="server"> 
    <div> 
    <table> 
     <tr> 
      <td>Username:</td> 
      <td><asp:TextBox ID="txtUserName" runat="server"></asp:TextBox></td> 
     </tr> 
     <tr> 
      <td>Password:</td> 
      <td><asp:TextBox ID="txtPassword" runat="server"></asp:TextBox></td> 
     </tr> 
     <tr> 
      <td> 
       <asp:Button ID="Button1" runat="server" Text="Button" /> 
      </td> 
     </tr> 
    </table> 
    </div> 
    </form> 
</body> 
</html> 

我的外部jQuery代码:

$(document).ready(function() { 
    $("#form1").validate({ 
     rules: { 
      <%=txtUserName.ClientID %>: { 
       required: true, 
       email: true 
      }, 
      <%=txtPassword.ClientID %>: { 
       required: true, 
       digits:true, 
       minlength:10, 
       maxlength:10 
      } 
     }, 
     messages: { 
      <%=txtUserName.ClientID %>:{ 
       required: "* Required Field *" 
      }, 
      <%=txtPassword.ClientID %>:{ 
       required:"* Required Field *" 
      } 
     } 
    }); 
}); 
+2

服务器端代码>'不会在JS文件中工作。它们不会被解析并且会被渲染为简单的文本。 – Satpal

+0

那么你能告诉我,我应该用什么来代替这个 – user3745023

回答

0

添加脚本完整路径类似

<script src="~/foldername/foldername/JScript1.js"></script> 

你只需要挑选文件并下载到Visual Studio中的页面。

也作为评论建议<%= txtUserName.ClientID%>这些是asp.net代码,不会在JavaScript外部文件中工作。

代替它请通过设置的ClientIDMode =“静态”跟随任何的溶液

溶液1

要么上的控件或页使用StaticId的。你可以找到link

<asp:TextBox id="txtUserName" runat="server" ClientIdMode ="static" /> 

设置它后,你可以aceess像

$('#txtUserName') 

解决方案2

看着你的HTML页面,是您的控件的详细信息由Asp.net引擎呈现。 Asp.net引擎将控件ID转换为使用的母版页,并将其附加到控件ID上。现在呈现的控件ID应该看起来像“ct100_txtUserName”,你可以得到你的控制像

$('#ct100_txtUserName') 

解决方案3

上的控件添加类,如

<asp:TextBox id="someId" CssClass="someClass" runat="server" /> 

,并得到像

控制
$('.someClass') 

但是最后一个比较慢

+0

你能告诉我应该用什么来代替<%= txtUserName.ClientID%>代码吗? – user3745023

2

将脚本移动到外部js文件时,必须用生成的客户端ID替换<%=txtUserName.ClientID %><%=txtPassword.ClientID %>

谢谢!

2

<%=txtUserName.ClientID %>这样的服务器端代码将不会在JS文件中工作。它们不会被解析并且会被渲染为简单的文本。可以使用rules add function

在ASPX页面,添加一个CSS类(在这里,我已经添加用户名

<asp:TextBox ID="txtUserName" runat="server" CssClass="username"></asp:TextBox> 

在外部文件中像`<%= txtUserName.ClientID%

jQuery(function() { 

    jQuery('form').validate(); 

    // Use custom class added to input and add rules like this 
    jQuery('.username').rules('add', { 
     required: true, 
     email: true, 
     messages: { 
      required: "* Required Field *" 
     } 
    }); 
});