2012-12-05 67 views
1

这个小提琴不是完整的代码集。然而,这是我遇到问题的孤立代码。onClick不会触发,chrome/safari

这适用于所有版本的IE,并且不适用于Safari/Chrome。具体来说,我试图让这个工作在IPAD上。选择按钮将推动,该功能将不会做任何事情,并将基本上卡在那里...任何人有任何建议?

http://jsfiddle.net/Eh9QC/

function selectStatements(f) 
      { 
      var selectedArray = new Array(); 
      var selObj = document.getElementById('statementGroups'); 
      var i = 1; 
      var count = 0; 
      for (i=0; i<selObj.options.length; i++) 
       { 
       if ((selObj.options[i].selected) && count<20) 
        { 
        selectedArray[count] = selObj.options[i].value; 
        count ++; 
        } 
       } 
      f.chosenStatements.value = selectedArray; 
      document.glStatementForm.glaction.value = "updateChosenList"; 
      document.glStatementForm.action="glstsend.shtml"; 
      document.glStatementForm.method="POST"; 
      document.glStatementForm.submit(); 
      } 
    </script>​​​ 

HTML:

 #IF EXPR = (clientState == "setList")     --> 
    <div id="openBox2"> 
       <tr> 
        <td VALIGN="top"><B>Statements:</B> 
        <td VALIGN="top"> 
        <SELECT NAME="statementGroups" SIZE=10 MULTIPLE>            <!-- 
           #SET NAME = ldx VALUE = 0               --><!-- 
           #WHILE EXPR=(ldx < disp_list_count)            --> 
             <OPTION VALUE= "(*disp_dropdown_value[ldx]*)">(*disp_dropdown_text[ldx]*)  <!-- 
             #SET NAME = ldx VALUE = ldx + 1           --><!-- 
           #ENDWHILE                   --> 
        </SELECT> 

       <tr> 
        <td> <BR /> 
        <td> <INPUT TYPE=BUTTON VALUE="Select" STYLE="font:8pt Arial" ONCLICK="selectStatements(this.form);"> 
                     <!-- 
       #ENDIF             --> 

      </table> 
    </div> 
    ​ 
+1

我的天啊,谁写的代码? –

+0

几个html标记丢失:'

','','' –

回答

1

首先,你必须

var selObj = document.getElementById('statementGroups'); 

可能指的是该元素在HTML

<SELECT NAME="statementGroups" SIZE=10 MULTIPLE> 

但这个元素没有任何id分配。有信心的浏览器会发现,你需要

<select name="statementGroups" id="statementGroups" size="10" 
multiple="multiple"> 

其次,

document.glStatementForm... 

大概是指与ID或名字“glStatementForm”的形式。但是这不是通常的方式来引用它,除非你有意将它添加到文档名称空间。我不知道是什么访问表单字段的大多数跨浏览器兼容的方式是,但可能是这样的:

var glsForm = document.getElementById('glStatementForm'), 
glsForm.elements['action'].value = "updateChosenList"; 
glsForm.action = "glstsend.shtml"; 
glsForm.method = "POST"; 
glsForm.submit(); 

,并且确保在您设置的glStatementForm的id属性的HTML。

+0

Thanks Stuart。看起来像id =“statementGroups”加法解决了我的问题。我赞赏建设性的回应。 –