动态更新onchange函数的问题

时间:2012-06-06 13:27:51

标签: javascript dynamic onchange

我想动态更改'form.submit();'的任何实例出现在onchange函数中,某些select元素为$('form')。submit();以便为表单本身触发提交事件。

以下是需要更新onchange功能的选择列表的示例:

<td class="form-field selectinput" align="left" valign="left" style="width: 90px;" title="Select status type">
        <select class="filterlist" name="cStatus" tabindex="5" style="width: 90px;" onchange="form.submit();">
          <option value="" title="[All]">[All]</option>
          <option value="A" title="Authorised">Authorised</option>
          <option value="C" selected="" title="Cancelled">Cancelled</option>
          <option value="U" title="Declined">Declined</option>
          <option value="R" title="Requested">Requested</option>
          <option value="T" title="Taken">Taken</option>
          <option value="W" title="Withdrawn">Withdrawn</option>
        </select>
      </td>

我在页面的标题部分插入以下内容以尝试更新函数:

 $(document).ready(function(){
$(function() {
   $('select').each(function() {
     var txt = this.onchange ;
     alert(txt);
     var patt=/form.submit()/g;
     var result=patt.test(txt);
     if (result) {
        var txt =  txt.replace('form.submit()',""); 
        this.onchange = eval(txt);
     }
   });
});

});

警告信息出现:

  

function onchange(event){    form.submit();    }   块引用

然后控制台日志显示以下错误:

  

未捕获的TypeError:对象函数onchange(event){     form.submit();   没有方法'替换'

我实际上可以使用以下内容:

 this.onchange = function() { $('form').submit(); }

但是在某些情况下,onchange还有其他代码以及form.submit();如:

form.submit();form.iYear.disabled=true;form.cGroupItem.disabled=true;

所以我不想替换整个函数本身,而是删除'form.submit();'并将其替换为'$('form')。submit();',以便上面显示为:

$('form').submit();form.iYear.disabled=true;form.cGroupItem.disabled=true;

我尝试在各个地方使用toString()和eval(),但是当我尝试编辑字符串txt的时候,我不断得到对象没有方法错误。

任何想法??

1 个答案:

答案 0 :(得分:0)

而不是做你的时髦评价而只是试试这个:

...
     if (result) {
        this.onchange = function(){}; //empty function
     }
...