首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SCRIPT5009:“setShowCard”在internet explorer中未定义

SCRIPT5009:“setShowCard”在internet explorer中未定义
EN

Stack Overflow用户
提问于 2013-11-21 20:10:56
回答 3查看 10K关注 0票数 2

我在IE10中的Struts web应用程序的一个页面上得到了上述错误,但在chrome或firefox中却没有。编辑:不适用于任何版本的internet explorer

显然未定义的javascript函数在调用它的JSP上定义。我已经查看了涉及此错误的其他问题,但它们似乎都是.Net或jQuery的问题,这两个问题在本页面中都没有使用(尽管在应用程序的其他地方使用了jQuery )。

这是JSP的精简版本:(对不起,它仍然很大,我没有写它,所以不能确定什么是不相关的)

代码语言:javascript
复制
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="/tags/XXX" prefix="XXX" %>
<%@ taglib uri="/tags/struts-tiles" prefix="tiles" %>

<tiles:insert page="/templates/acceptance-layout.jsp" flush="false"> 
  <tiles:put name="pagename" value="paymentdetails" type="String" />
  <tiles:put name="errors" type="String"/>
  <tiles:put name="body" type="String">    

            <script language="JavaScript" type="text/javascript">
                <!-- 
                autoCompOff('PaymentDetailsForm'); 
                -->
                function setShowCard(value){
                    if(value != ""){
                        if(value == "F" || value == "O")                        
                        document.getElementById("isPageReloaded").value = "Y";  
                        else if(value == "N" || value == "S")
                        document.getElementById("isPageReloaded").value = "N";                  
                    }                                       
                }
            </script> 

            <html:form action="PaymentDetails" method="POST">

                <input type="hidden" id="redirectLink" name="redirectLink" value=""/>
                <input type="hidden" name="totalprice" value="<bean:write name='wrapper' property='totalPrice' />" />
                <input type="hidden" name="paymentdetails.recalc" value="" />     
                <input type="hidden" id="showWaitertPage" name="showWaitertPage" value="md-loading"/>               

                <section class="content-main">
                    <div class="inner-content">
                       <div class="box box-summary">
                            <div class="box-body">
                                <label for="cardowner" class="form-label">Whose card is this</label>

                                    <bean:define id="styleClass"><bean:write name="PaymentDetailsForm" property="styleClass" /></bean:define>
                                     <XXX:select  property="cardHolder" id="cardowner" styleClass="<%=styleClass %>"  onchange="setShowCard(this.value)" required ="required">
                                            <XXX:xxxOptionsCollection name="cardHolderList" />
                                            <input type="hidden" id="isPageReloaded"  name="pageReload" value="N" />
                                     </XXX:select> 
                </div>
                        </div>
                    </div> <!-- END .inner-content -->  
                </section>
                    <script>
                        applyCreditCardCharge(document.PaymentDetailsForm,document.PaymentDetailsForm.cardType.value);
                    </script>

            </html:form>

    </tiles:put>
</tiles:insert>

这是我从IE10上的开发人员工具中获得的html:

代码语言:javascript
复制
<!doctype html>
<!-- HTML5 Boilerplate -->
<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if (IE 7)&!(IEMobile)]><html class="no-js lt-ie9 lt-ie8" lang="en"><![endif]-->
<!--[if (IE 8)&!(IEMobile)]><html class="no-js lt-ie9" lang="en"><![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js gt-ie8" lang="en"><!--<![endif]-->
<head>
    <meta charset="utf-8">
    <base href="http://XXX/pages/paymentdetails.jsp">

            <script src="scripts/libs/modernizr-2.6.2.js"></script>
            <script src="scripts/util.js?v1.9"></script>
            <script src="scripts/libs/jquery-1.10.2.min.js"></script>
            <script src="scripts/form.js?v1.0"></script>

<meta name = "format-detection" content = "telephone=no">
</head>

<body id="top" class="annual js-form">
<div id="outer-wrap">

            <script language="JavaScript" type="text/javascript">
                <!-- 
                autoCompOff('PaymentDetailsForm'); 
                -->
                function setShowCard(value){
                console.log("got here");
                    if(value != ""){
                        if(value == "F" || value == "O")                        
                        document.getElementById("isPageReloaded").value = "Y";  
                        else if(value == "N" || value == "S")
                        document.getElementById("isPageReloaded").value = "N";                  
                    }                                       
                }
            </script> 

            <form name="PaymentDetailsForm" method="POST" action="/XXX/PaymentDetails.do">

                <input type="hidden" id="redirectLink" name="redirectLink" value=""/>
                <input type="hidden" name="totalprice" value="1963.66" />
                <input type="hidden" name="paymentdetails.recalc" value="" />     
                <input type="hidden" id="showWaitertPage" name="showWaitertPage" value="md-loading"/>               

                <section class="content-main">
                    <div class="inner-content">
                        <div class="box box-editable editing js-show-hide">
                            <div class="box-body">                              
                                <div class="form-row editable js-ufs">
                                    <label for="cardowner" class="form-label">Whose card is this</label>                                    
                                     <select name="cardHolder" id="cardowner" required="required" onchange="setShowCard(this.value)" class="js-ufs-trigger"><option value="" selected="selected"></option>
<option value="N">User</option>
<option value="S">Partner/Spouse</option>
<option value="F">Family member</option>
<option value="O">Other</option>
                                            <input type="hidden" id="isPageReloaded"  name="pageReload" value="N" /></select> 
                                </div>
                            </div>
                        </div>                                  
                    </div> <!-- END .inner-content -->  
                </section>

                    <script>
                        applyCreditCardCharge(document.PaymentDetailsForm,document.PaymentDetailsForm.cardType.value);
                    </script>
            </form>        
</div>
            <script src="scripts/helpers.js"></script>
            <script src="scripts/conditional-loader.js?v0.9"></script>
</body>
</html>

任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-21 23:29:53

我只需要将autoCompOff方法移到找不到的方法下面。如果有人知道,我很想知道为什么这样做有效。

票数 1
EN

Stack Overflow用户

发布于 2014-04-14 15:08:22

我也遇到过类似的问题。

错误;提交:‘SCRIPT5009’在internet explorer中未定义

这里' submit‘是我的submit按钮的id。

下面这一行抛出错误:

代码语言:javascript
复制
$(submit).click(function() {

我将其更改为:

代码语言:javascript
复制
$('#submit').click(function() {

它现在可以在IE上工作了。希望这对那里的人有帮助。

票数 1
EN

Stack Overflow用户

发布于 2013-12-14 20:22:46

<script>元素已经受到保护,这意味着它是一个不遵循超文本标记语言解析标准的部分。可以有一个变量,var a = "Hello" (双引号),超文本标记语言解析器不会中断。

不幸的是,注释块部分在script元素中不起作用:

代码语言:javascript
复制
<!-- -->

如果您想注释掉一个函数,请使用C++样式的双正斜杠,如下所示:

代码语言:javascript
复制
//autoCompOff('PaymentDetailsForm'); 

我希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20120675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档