未捕获的TypeError:无法调用未定义的方法'indexOf'

时间:2013-01-28 10:36:05

标签: javascript ajax jquery oracle-apex

我的oracle apex应用程序中的页面javascripts下面有两个HTML Header

<script type="text/javascript">
function createEventListeners3(pThis)
{

var mainRow = "f04_"+pThis.id.substr(pThis.id.indexOf('_')+1);
$("#" + mainRow).change(function(){
var that = this;
var vRow = "f06_"+pThis.id.substr(pThis.id.indexOf('_')+1);
$.post("wwv_flow.show", 
       {p_request      : "APPLICATION_PROCESS=GET_AMOUNT",
        p_flow_id      : $v("pFlowId"),
        p_flow_step_id : $v("pFlowStepId"),
        p_instance     : $v("pInstance"),
        x01            : $(this).val()
        },
        function(data){ 
            if ($("#" + vRow).val() == ''){
                $("#" + vRow).val(data);
            }
        },
        "text"
      );
});

}
</script>

我正在javascript点击autocomplete select event以上。

<script type="text/javascript">
function createEventListeners()
{

$(function(){
 /* Set autocomplete */
 $('input[name="f04"]').autocomplete({
  source:function(req,res){

   /* Parameters for jQuery ajax */
   var opt={
    url:"wwv_flow.show",
    dataType:"json",
    traditional:true,
    cache:false,
    type:"POST",
    data:{
     p_flow_id:$v("pFlowId"),
     p_flow_step_id:$v("pFlowStepId"),
     p_instance:$v("pInstance"),
     p_request:"APPLICATION_PROCESS=GET_DESCRIPTION",
     x01:req.term
    },
    success:function(jsonData){
     res(
      $.map(jsonData.row,function(jsonRow){
       return{
        label:jsonRow.RET,
        value:jsonRow.DIS
       };
      })
     );
    }
   };
   /* Call Ajax to get list */
   $.ajax(opt);
  },
  focus:function(event,ui){
   /* Prevent value change when list get focus */
//   return false;
event.preventDefault();
  },

  select: function (event, ui) {

    createEventListeners3(this.id);
}

 });
});

return;
}
</script>

但我收到了以下错误。

Uncaught TypeError: Cannot call method 'indexOf' of undefined

我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:0)

您已经可以将id而不是对象传递给函数createEventListeners3。使用this代替this.id

传递对象

更改

createEventListeners3(this.id);

createEventListeners3(this);