2013-06-05 27 views
1

這可能看起來像一個簡單的問題,但我已經把它弄糊塗了,找不到任何線索。爲什麼我的asp.net webform頁面驗證在IE9中失敗,但不是Chrome(當前版本)

這是一個基本的網頁(實際上用於演示目的下調)

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="NUBrand.master.cs" Inherits="nuservices_NUBrand" %> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta charset="UTF-8" /> 
<meta http-equiv="imagetoolbar" content="no" /> 
<meta name="language" content="en" /> 
<script type="text/javascript"> 
    var isiPad = navigator.userAgent.match(/iPad/i) != null; 
    var ua = navigator.userAgent; 
    var isiPad = /iPad/i.test(ua); 
    if (isiPad == false) { // viewport tag breaks ipad portrait... don't use it if it's an ipad 
     document.write('<meta name="viewport" content="width=device-width,initial-scale=1.0">'); 
    } 
</script> 
<%--<!--[if gte IE 9]><!--> 
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
<script>window.jQuery || document.write('<script src="javascript/jquery-2.0.0.min.js"><\/script>')</script> 
<!--<![endif]-->--%> 

<%--js--%> 
<script src="resources/js/jquery.stayInWebApp.js"></script> 
<script src="resources/js/global.js"></script> 

<%--css--%><link href="resources/css/bootstrap-custom.css" rel="stylesheet" /> 
<link href="resources/css/bootstrap-custom.css" rel="stylesheet" /> 
<link href="resources/forms.css" rel="stylesheet" /> 
<link href="resources/css/normalize.css" rel="stylesheet" /> 
<link href="resources/css/global.css" rel="stylesheet" /> 
<link media="all and (max-width: 768px)" rel="stylesheet" type="text/css" href="resources/css/mobile.css" /> 

<script src="resources/js/modernizr.js"></script> 
<asp:ContentPlaceHolder ID="cphHead" runat="server" /> 
</head> 
<body> 
<div id="container"> 
    <header id="mainHead"> 
    </header> 
    <div id="pageHeader"> 
     <div id="breadcrumb"> 
      <asp:ContentPlaceHolder ID="cphHeaderLinks" runat="server" /> 
     </div> 
     <div class="container-fluid"> 
      <form id="Form1" runat="server" name="form1"> 
       <asp:ContentPlaceHolder ID="cphBodyWithForm" runat="server" /> 
       <asp:ContentPlaceHolder ID="cphBody" runat="server" /> 
       <asp:ContentPlaceHolder ID="cphInputForm" runat="server" /> 
      </form> 
      <div id="pageChildren"> 
      </div> 
     </div> 
    </div> 

    <footer id="mainFooter"> 
    </footer> 
</div> 
<asp:ContentPlaceHolder ID="cphPageScripts" runat="server" /> 
</body> 
</html> 

如果內容並不重要,讓我知道,我可以刪除也爲讀者着想。

在機身的主要部分,我有三個內容佔位符

<asp:ContentPlaceHolder ID="cphBodyWithForm" runat="server" /> 
<asp:ContentPlaceHolder ID="cphBody" runat="server" /> 
<asp:ContentPlaceHolder ID="cphInputForm" runat="server" /> 

我使用cphBody大多數我的網頁,如果該事項,其他的人都是有遺留原因。

一個例子網頁未在IE9工作(但在Chrome中正常工作)看起來是這樣的:

<asp:Content ContentPlaceHolderID="cphBody" runat="Server"> 
    <div class="row-fluid span12"> 
     <div class="span7"> 
      <%--validation summary--%> 
      <div class="row-fluid"> 
       <div class="span12"> 
        <asp:ValidationSummary ID="ValidationSummary2" runat="server" HeaderText="You must provide:" 
         ForeColor="#BF2E1A" /> 
       </div> 
      </div> 
      <%--career week date--%> 
      <div class="row-fluid"> 
       <div class="span6"> 
        <span>Career Week Date:<%= UtilsWww.RequiredAsterisk %></span> 
       </div> 
       <div class="span6"> 
        <asp:DropDownList runat="server" ID="inDate"> 
         <asp:ListItem Text="" /> 
         <asp:ListItem Text="February" /> 
         <asp:ListItem Text="May" /> 
         <asp:ListItem Text="August" /> 
         <asp:ListItem Text="November" /> 
        </asp:DropDownList> 
        <asp:RequiredFieldValidator runat="server" ErrorMessage="Career Week date" ID="RequiredFieldValidator4" 
         ControlToValidate="inDate" Display="Dynamic" Text="X" EnableClientScript="True" /> 
       </div> 
      </div> 
      <%--Contact Email--%> 
      <div class="row-fluid"> 
       <div class="span6"> 
        <span>Contact's email:<%= UtilsWww.RequiredAsterisk %></span> 
       </div> 
       <div class="span6"> 
        <asp:TextBox runat="server" ID="txtContactPersonEmail"></asp:TextBox> 
        <asp:RequiredFieldValidator runat="server" ErrorMessage="Contact Person's Email" 
         ID="RequiredFieldValidator3" Display="Dynamic" ControlToValidate="txtContactPersonEmail" 
         ToolTip="A contact person email must be provided!">X</asp:RequiredFieldValidator> 
        <asp:RegularExpressionValidator runat="server" ErrorMessage="Valid Email Address" 
         ID="RegularExpressionValidator1" Display="Dynamic" ControlToValidate="txtContactPersonEmail" 
         ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ToolTip="Email addresses must conform to internet email standards!">X</asp:RegularExpressionValidator> 
       </div> 
      </div> 
      <div class="row-fluid"> 
       <asp:LinkButton ID="Linkbutton1" runat="server" CssClass="formSubmitButton" OnClick="Linkbutton1_Click"> 
         Submit<img src="resources/images/icn_getstarted.png" alt="submit" class="btn-arrow"/> 
       </asp:LinkButton> 
      </div> 
     </div> 
     </div> 
     <div class="span5"> 
    </div> 
</asp:Content> 

這個例子頁面的代碼隱藏做到這一點:

protected void Linkbutton1_Click(object sender, EventArgs e) 
{ 
    this.Validate(); 

    if (!this.IsValid) return; 
    ...Do some other Stuff... 
} 

這是我所有問題發生的線路:

if (!this.IsValid) return; 

在Chrome中,該聲明不會返回,所有內容都是有效的,它就是這樣。

在IE9中,該行命中return語句,我感到很傷心和困惑。

那麼你認爲這裏發生了什麼?我在哪裏可以看到(我已經嘗試過使用IE開發工具來調試js,它讓人感到困惑,我已經將他們在'破損頁面'中的代碼與在IE9中實際工作的少數代碼進行了比較,沒有真正的區別) ?我很想得到一個像「哦,添加這個,一切都會很棒!」的答案,但是我沒有看到發生這種情況。所以我問在哪裏尋找解決方案,我完全失去了。

+0

你有沒有試過看開發控制檯,看看是否有任何JavaScript錯誤引發? – emd

+0

你是否正在做'頁面加載'中的表單域(例如重置/默認值)? – EdSF

+0

@emd他們是兩個js錯誤從一些無關的圖書館進來。你認爲這可以參與其中嗎? – ledgeJumper

回答

0

要在信用到期時給予抵免,請參閱對問題的評論。我們從那裏得到答案,所以我會在這裏發佈。

在頁面上引發了一些JavaScript錯誤(在我們被拉入的無關的庫中)。 Chrome顯然沒有這個問題,但IE做到了。我更正了js錯誤,頁面再次正常工作。活泉!

相關問題