首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >函数调用和调试顺序混乱

函数调用和调试顺序混乱
EN

Stack Overflow用户
提问于 2016-02-05 17:27:38
回答 1查看 28关注 0票数 0

我试图在JSP程序中调试一个函数调用,并对事情是如何工作的顺序感到困惑。我正在使用NetBeans。当我以调试模式运行该项目时,它会进入我的'$("#searchEFT").mouseup(function ()的函数,并对所有函数进行跟踪。'searchEFT‘是我用来访问servlet的一个按钮。当我处理该页面,然后单击“searchEFT”按钮时,它会根据获得正确的警报而命中函数调用,但在调试中不会跟踪。它为什么要这么做?加载时函数的第一次调用是否在用户执行mouseclick时设置检查?

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

编辑:以下是JSP代码:

代码语言:javascript
运行
复制
  <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>

谢谢

EN

Stack Overflow用户

回答已采纳

发布于 2016-02-05 18:16:56

这句话:

代码语言:javascript
运行
复制
$("#searchEFT").mouseup(function ()

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

如果要在mouseup处理程序中中断,则需要在处理程序函数本身的某个位置设置一个断点,例如,

代码语言:javascript
运行
复制
// First executable line of the mouseup handler
var Cmd_Sched_Number = $('#CMDScheduleNumber').val();

不相关,但我会将处理程序函数分解成小得多的部分,大致如下:

代码语言:javascript
运行
复制
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);

这样就可以轻松地考虑一些小事情,并开始揭示您的验证需求,并建议您的剩余代码的形状。

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

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35230036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档