对函数调用和调试的排序感到困惑

时间:2016-02-05 17:27:39

标签: javascript jsp

我正在尝试在我的JSP程序中调试函数调用,并且确实对事情的工作顺序感到困惑。我正在使用NetBeans。当我在调试模式下运行项目时,它进入我的'$(“#searchEFT”)。mouseup(function()'函数并遍历所有这些.'searchEFT'是一个按钮,我正在使用访问我的servlet。当我处理页面然后单击'searchEFT'按钮时,它会根据获得正确的警报但在调试中没有跟踪来触及函数调用。为什么这样做?是首次调用函数on load设置用户执行鼠标点击时的检查?

此函数位于顶部的'$(document).ready(function()'之外,函数调用位于JSP中的按钮声明之后。

编辑:这是JSP代码:

          @Override
    protected void     onPostExecute(Movies[] strings) {
    if (strings != null) {
        mMoviesAdapter.clear();
        for (Movies moviesStr : strings) {
            mMoviesAdapter.add(moviesStr);
        }
    }else if(mFavouriteMovies != null){
        mMoviesAdapter.clear();
        for(FavouriteMovies     favouriteMoviesStr : mFavouriteMovies){
              mMoviesAdapter.offlineAdd(favouriteMoviesStr);
        }
    }
    Log.v("FetchMoviesTask","Count :" +     mMoviesAdapter.getItem(0));
        mMoviesAdapter.notifyDataSetChanged();
}

由于

1 个答案:

答案 0 :(得分:1)

该行:

$("#searchEFT").mouseup(function ()

设置 mouseup处理程序的函数调用;它不是mouseup处理程序本身。

如果你想在里面中断鼠标处理程序,那么你需要在处理函数本身的某个地方设置一个断点,例如,

// First executable line of the mouseup handler
var Cmd_Sched_Number = $('#CMDScheduleNumber').val();

不相关,但我会将处理程序功能分解为个较小的部分,粗略地说:

function getFormData() {
  return {
      number: $('#CMDScheduleNumber').val().trim(),
      year:   $('#CMDContractYear').val().trim(),
      status: $('#CMDSchedStatus').val().replace(/\s/g, '').trim(),
      date:   $('#CMDCreationDate').val().trim()
  };
}

function invalidNumberAndYear(formData) {
  return ((formData.number !== '') && (formData.year   === '')) ||
         ((formData.year   !== '') && (formData.number === ''));
}

function isPullAll(formData) {
  return formData.number === '' &&
         formData.year   === '' &&
         formData.status === '' &&
         formData.date   === '';
}

function searchEftMouseup(e) {
  e.preventDefault();

  var formData = getFormData();

  if (invalidNumberAndYear(formData)) {
    alert('Schedule Number and EFT Contract Year must be both populated');
    return;
  }

  if (isPullAll(formData)) {
    if (confirm('Are you sure you want to pull all EFT schedule numbers?')) {
      $('#formID').submit();
    } else {
      alert('Please enter information in any of the command line fields');
    }
  }
}

$('#searchEFT').on('mouseup', searchEftMouseup);

这样可以轻松地思考小东西,并开始揭示您的验证需求,并为您的剩余代码建议一个形状。

(其中大多数,顺便说一下,与问题无关 - 只发布帮助人们理解问题所需的最低金额是好的:)