HTML onchange没有触发Google的htmlservice

时间:2015-09-04 23:56:57

标签: javascript html google-apps-script

我正在尝试了解Google的htmlservice的工作原理。我采取了他们的example code for the form并修改如下:

var whichYear='';
var whichClass='';
function processForm(formObject) {
Logger = BetterLog
           .useSpreadsheet('0AiWcWJrA0KCpdHB2X2pYQ04xSXNDVnNtTnBOX1RRd1E');

Logger.log('in processForm enumerating properties');
for(var prop in formObject){
     Logger.log('Entered processForm - prop::'+prop+'--value--  '+formObject[prop]+':: ');
     if( prop == 'yearSelect')
     {
       if (formObject[prop] != 'nochange')
         whichYear=formObject[prop];
     }
     else
       if(prop == 'classSelect'){
         if(formObject[prop]!= 'nochange')
           whichClass = formObject[prop];
       }
     if (whichClass != '' && whichYear!='')
       tallyClass();
   }
  return 'a string';
} 
function tallyClass(){
Logger = BetterLog
           .useSpreadsheet('0AiWcWJrA0KCpdHB2X2pYQ04xSXNDVnNtTnBOX1RRd1E');
 Logger.log('Entered tallyClass - whichYear::'+whichYear+'--whichClass--'+whichClass+':: ');

}

关联的html如下所示:

<script>
  function updateUrl(url) {
    var div = document.getElementById('output');
    div.innerHTML = '<a href="' + url + '">Please choose which group to tally.</a>';
  }
</script>

<form>
  <select name="yearSelect" id="yearSelect" onchange="google.script.run
          .withSuccessHandler(updateUrl)
          .processForm(this.parentNode)" >
   <option value="nochange">Please select a year</option>
   <option value="2006">2006</option>
   <option value="2010">2010</option>
</select>
<p>
<select name="classSelect" id="classSelect" onchange="google.script.run
          .withSuccessHandler(updateUrl)
          .processForm(this.parentNode)" >
   <option value="nochange">Please select a class</option>
   <option value="oldbie">oldbie</option>
   <option value="newbie">newbie</option>
 </select>
</form>
 <p>
<div id="output"> </div>
<input type="button" value="Close" onclick="google.script.host.close()" />

我正在尝试避免使用提交按钮,以便我可以动态响应菜单选择事件。选择哪一年按预期触发formProcess函数,但相同的类选择菜单不执行任何操作。

我希望看到的是当选择一个菜单时,我会收到onchange事件调用。当我收到两个onchange事件调用时,我将处理用户的选择。

我很确定我可以做一个onSubmit调用并完成它但我真的很想知道为什么如果选择了第二个菜单,我永远不会得到onchange调用。

onchange事件只能附加到单个元素吗?

1 个答案:

答案 0 :(得分:0)

更改两个下拉菜单之间的HTML
<p> 

<p></p>

关闭段落标记修复了问题。

错误滑过渲染器,因此对话框正确呈现,但没有通过监视DOM事件的代码。因此,第二次下拉列表中没有onChange事件。