我试图在JSP程序中调试一个函数调用,并对事情是如何工作的顺序感到困惑。我正在使用NetBeans。当我以调试模式运行该项目时,它会进入我的'$("#searchEFT").mouseup(function ()的函数,并对所有函数进行跟踪。'searchEFT‘是我用来访问servlet的一个按钮。当我处理该页面,然后单击“searchEFT”按钮时,它会根据获得正确的警报而命中函数调用,但在调试中不会跟踪。它为什么要这么做?加载时函数的第一次调用是否在用户执行mouseclick时设置检查?
该函数位于顶部的'$(document).ready(function ()' )之外,函数调用在JSP中的按钮声明之后。
编辑:以下是JSP代码:
  <head>
        <script>
       $(document).ready(function () 
     {
          $(function () 
          {
            $("#CMDCreationDate").datepicker({
                dateFormat: "yy-mm-dd"
              });
          });
    }) ;  
    window.onbeforeunload = confirmExit;
      function confirmExit()
      {
        alert("Alert-- leaving this page.");
       }         
     function numbersonly(myfield, e, dec) {
        //function to check that only numeric values are entered
        var key;
        var keychar;
        if (window.event)
            key = window.event.keyCode;
        else if (e)
            key = e.which;
        else
            return true;
        keychar = String.fromCharCode(key);
        // control keys 
        if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27))
            return true;
        // numbers
        else if ((("0123456789").indexOf(keychar) > -1))
            return true;
        // decimal point jump 
        else if (dec && (keychar == ".")) {
            myfield.form.elements[dec].focus();
            return false;
        } else
            return false;
    }
 </script>
</head>   
<body>
    <header>
        <?audit suppress oracle.ide.xml.validation-error?>
        <div class="floatL appTTL">SAMS - EFT Schedule Number Search/Update Screen</div>
        <div id="navWrap">
            <nav class="floatR">
                <ul>
                    <li>
                        <a href="#">Home</a>
                    </li>
                    <li>
                        <a href="#">Search</a>
                    </li>
                    <li>
                        <a href="#">Help</a>
                    </li>
                    <li>
                        <a href="#">Help</a>
                    </li>
                </ul>
            </nav>
        </div>
        <div class="clear"></div>
    </header>
    <main class="mainWrapper">
        <form id="formID" method="POST" action="EFTscreen?action=searchEFT" >  
            <div class="commandcontainer">
              <div id="divBox">
                  <h1 class="formTTL">Please Enter Schedule Number/Contract Year or either Schedule
                      Status/Creation Date value</h1>
                  <label class="labelTTL">Schedule Number</label>
                  <label class="labelTTL3">Contract Year</label>
                  <label class="labelTTL3">Status</label>
                  <label class="labelTTL">Creation Date</label>
                  <br/>
                  <input id="CMDScheduleNumber" name="CMDScheduleNumber" type="number" class="textsmall" maxlength="5"
                         value="${ScheduleNum}" onKeyPress="return numbersonly(this, event)"/>
                  <input id="CMDContractYear" name="CMDContractYear" type="number" class="textsmall" maxlength="4"
                         value="${ContractYear}" onKeyPress="return numbersonly(this, event)"/>
                  <select size="1" id="CMDSchedStatus" name="CMDSchedStatus" class="combosmall">
                       <c:forEach items="${statusList}" var="current">
                          <option value="${current}"
                           <c:if test="${current == Status}"> selected="selected"</c:if>
                                   >${current}</option>
                       </c:forEach>
                  </select> 
                  <input id="CMDCreationDate" name="CMDCreationDate" type="text" class="textsmall"
                         value="${CreationDate}" maxlength="10"/>
                  <br/>
                  <button id="searchEFT" class="btn smBtn">Search</button>
              </div>
                  <div id="divButton">
                      <button id="searchMEFTS" type="submit" formaction="EFTscreen?action=searchMEFTS&screen=mainEFT"
                        class="btn midBtn">Update Schedule Status</button>   
                      <button id="clearMenu" type="submit" formaction="EFTscreen?action=clearMenu"
                        class="btn midBtn Space">Return to Menu</button>   
                  </div>
              <div id="clear"></div>    
            </div>   
            <article class="divBoxdet">
                <fmt:formatNumber var="trdettotal" value="${detResults.getTOTAL_AMOUNT()}" pattern="$##,###,##0.00"/>
                <label class="labelTTLdet floatL">
                    Schedule Number
                    <input id="txtScheduleNumber" type="number" class="textdet" 
                            value="${detResults.getSCHEDULE_NUMBER()}" readonly/>
                </label>
                <label class="labelTTLdet floatL">
                    Contract Year
                    <input id="txtContractYear" type="number" class="textdet" 
                           value="${detResults.getEFT_CONTRACT_YEAR()}" readonly/>
                </label>
                <label class="labelTTLdet floatL">
                    Date Created
                    <input id="txtCreationDate" type="text" class="textdet" 
                               value="${detResults.getCREATION_DATE()}"  readonly/>
                </label>
                <div class="clear"></div>
                <br/>
                <br/>
                <label class="labelTTLdet floatL">
                    Num of Records
                    <input id="txtNumRecords" type="number" class="textdet" 
                            value="${detResults.getNUM_OF_PAY_RECORDS()}" readonly/>
                </label>
                <label class="labelTTLdet floatL">
                    Status
                    <br/>
                    <input id="txtStatus" type="text" class="textdet" 
                            value="${detResults.getSTATUS()}"  maxlength="2"/>
                </label>
                <label class="labelTTLdet floatL">
                    Status Date
                    <input id="txtStatusDate" type="text" class="textdet" 
                            value="${detResults.getSTATUS_DATE()}" maxlength="10"/>
                </label>
                <div class="clear"></div>
                <br/>
                <br/>
                <label class="labelTTLdet floatL">
                    Schedule Total
                    <input id="txtScheduleTotal" 
                           type="text" class="textdet" value="${trdettotal}" readonly/>
                </label>
                <label class="labelTTLdet floatL">
                    Schedule Post Date
                    <input id="txtPostDate" type="text" class="textdet" 
                            value="${detResults.getSCHEDULE_POST_DATE()}" maxlength="10"/>
                </label>
                <label class="labelTTLdet floatL">
                    Reel Number
                    <input id="txtReelNumber" type="text" class="textdet" 
                           value="${detResults.getREEL_NUMBER()}" maxlength="8"/>
                </label>
                <div class="clear"></div>
                <br/>
                <br/>
                   <button id="pullMEFTD" 
                        class="btn largeBtn Space floatL">Update Schedule Payment Status</button>
                <script>
                    $("#searchEFT").mouseup(function ()
                    {
                        var Cmd_Sched_Number = $('#CMDScheduleNumber').val();
                        var schedLen = Cmd_Sched_Number.length;
                        //var Cmd_Contract_Year = document.getElementById("CMDContractYear").value;
                        var Cmd_Contract_Year = $('#CMDContractYear').val();
                        var yearLen = Cmd_Contract_Year.length;
                        //var Cmd_Status = document.getElementById("CMDSchedStatus").value;
                        var Cmd_Status = $('#CMDSchedStatus').val();
                        var statStr = Cmd_Status.replace(/\s/g, "");
                        var statLen = statStr.length;
                        //var Cmd_Creation_Date = document.getElementById("CMDCreationDate").value;
                        var Cmd_Creation_Date = $('#CMDCreationDate').val();
                        var createLen = Cmd_Creation_Date.length;
                     if ((schedLen > 0 && yearLen === 0) || (schedLen === 0 && yearLen > 0))
                        {
                            alert("Schedule Number and EFT Contract Year must be both populated");
                        }
                        ;
                      if ((statLen === 0) && (createLen === 0) && (schedLen === 0) && (yearLen === 0))
                        {
                            var r = confirm("Are you sure you want to pull all EFT schedule numbers?");
                            if (r === false)
                            {
                                alert("Please enter information in any of the command line fields");
                                return false;
                            }
                            else
                            {
                                $('#formID').submit();
                            }
                        } ;
                  });  
                  $("#pullMEFTS").mouseup(function ()
                    {
                        var Det_Sched_Number = $('#txtScheduleNumber').val();
                        var detschedLen = Det_Sched_Number.length;
                        //var Cmd_Contract_Year = document.getElementById("CMDContractYear").value;
                        var Det_Contract_Year = $('#txtContractYear').val();
                        var detyearLen = Det.length;
                        var Det_Status = $('#txtStatus').val();             
                     if (detschedLen > 0)
                        {
                            alert("Schedule Number not found.  Please investigate");
                        }
                        ;
                      if ( holdStatus.matches("RP") ||
                           holdStatus.matches("VP") ||
                           holdStatus.matches("CP") )
                       {
                        alert("User can only update schedule number in NP status");
                       }
                  });    
                </script>
            </article>
       </form>         
    </main>
</body>谢谢
发布于 2016-02-05 18:16:56
这句话:
$("#searchEFT").mouseup(function ()是设置mouseup处理程序的函数调用;它不是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);这样就可以轻松地考虑一些小事情,并开始揭示您的验证需求,并建议您的剩余代码的形状。
(顺便说一句,其中大部分都与问题无关-最好只发布帮助人们理解问题所需的最低金额:)
https://stackoverflow.com/questions/35230036
复制相似问题