FF 3.6和jQuery 1.7以及removeEventListener()

时间:2012-07-17 18:26:30

标签: javascript jquery firefox

我遇到FireFox 3.6的问题,不喜欢在jQuery(v1.7.2)中调用非jQuery函数。

减少我的代码版本:

function doInitialiseForm( theField ) {
  /* loop through a few fields and set the appropriate attributes & class */
  nX = parseInt( theField ) ;
  var inputElement = '' ;
  for ( i=(nX + 1); i <= 10 ; i++ )
  {
    $('#acBox' + i).addClass('pHide') ;  
    /* toggle the required attribute/class on the input boxes - for HTML5 input validation to behave correctly ... */
    inputElement =  document.getElementById('acBoxName_' + i ) ;
    inputElement.removeAttribute('required');
    $( inputElement ).removeClass( 'required' )
  }
}

$(document).ready(function() {

  if ( isBookingPage == '1' )
  {
      doInitialiseForm( document.getElementById('AttendingCount') ) ;  
  }
});

FireFox报告错误:

Error: uncaught exception: [Exception... "Not enough arguments"  nsresult: "0x80570001   (NS_ERROR_XPC_NOT_ENOUGH_ARGS)"  location: "JS frame :: http//development_server/Booking/js/script.js :: doInitialiseForm:: line 65"  data: no]

这似乎与FF期望removeEventListener()的第三个参数有关,这是可选的。但是,我不是直接使用removeEventListener()

为了让上述代码在旧版本的FireFox中运行,我需要实现哪些其他代码?

1 个答案:

答案 0 :(得分:0)

问题现已解决。

函数doInitialiseForm()的部分省略代码是调用setAttribute()而我没有包含第二个参数。

即。最初写成

inputElement.setAttribute('required');

什么时候应该

inputElement.setAttribute('required','');