Javascript 在asp.net中使用页面方法时无法清除文本框

Javascript 在asp.net中使用页面方法时无法清除文本框,javascript,asp.net,.net,pagemethods,Javascript,Asp.net,.net,Pagemethods,我一直在努力使用.net页面方法。我有一个文本框,如果数据库调用返回的值无效或不在表中,我想清除它,现在有一个javascript显示弹出消息,但无法清除字段。这是我的密码 aspx code: asp:TextBox name="LoanNumber" ID="LoanNumber" runat="server" size="18" style="font-size: 9pt" ValidationGroup="requiredCheck" on

我一直在努力使用.net页面方法。我有一个文本框,如果数据库调用返回的值无效或不在表中,我想清除它,现在有一个javascript显示弹出消息,但无法清除字段。这是我的密码

aspx code:
      asp:TextBox name="LoanNumber" ID="LoanNumber" runat="server" size="18" 
     style="font-size: 9pt"       ValidationGroup="requiredCheck" 
     onchange="javascript:SetFocus();loanCheckup();resetOnChange();" MaxLength="10" 
    ToolTip="Enter a Loan Number"  AutoPostBack="false"></asp:TextBox>

  <asp:RequiredFieldValidator   ID="reqLoanNumExists" runat="server"          ControlToValidate="LoanNumber" Display="Dynamic" 
    ErrorMessage="Required Loan Number"
     SetFocusOnError="true" ValidationGroup="requiredCheck">Required!     </asp:RequiredFieldValidator>
    <asp:RegularExpressionValidator ID="reqLoanNumber"
 ControlToValidate="LoanNumber" ValidationExpression="\d+"    Display="Static"             
   EnableClientScript="true"    SetFocusOnError="true" 
          ErrorMessage="Accepts Numbers Only!"    runat="server">
       </asp:RegularExpressionValidator>
我的java脚本:

    function loanCheckup() {

 // var txtLoanNum = document.getElementById('<%=LoanNumber.ClientID %>').value;

 var txtLoanNum = document.getElementById('LoanNumber').value;
//return Regex.IsMatch(txtLoanNum, "^-?\d*[0-9]?(|.\d*[0-9]|,\d*[0-9])?$");
  PageMethods.getRowValue(txtLoanNum, successLoan,failLoan);


}


 function successLoan(tmpResultPass) {

  alert(tmpResultPass);
 }


 function failLoan(tmpResultFail ) {

  alert(tmpResultFail);
 document.getElementById('LoanNumber').value = "";    
  }
函数loanCheckup(){
//var txtLoanNum=document.getElementById(“”).value;
var txtLoanNum=document.getElementById('LoanNumber').value;
//返回Regex.IsMatch(txtLoanNum,“^-?\d*[0-9]?(|.\d*[0-9]|,\d*[0-9])?$”;
getRowValue(txtLoanNum、successLoan、failLoan);
}
功能成功贷款(tmpResultPass){
警报(TMPRELTPASS);
}
功能失效贷款(TMPRELTFAIL){
警报(TMPRELTFAIL);
document.getElementById('LoannNumber')。value=“”;
}

现在,当捕获到异常时,将显示TMPRELTFAIL,但清除文本字段的下一行永远不会执行。我有一个脚本管理器,启用pagemethods=true。除清除文本框字段外,所有操作都正常。非常感谢您的帮助。

未注释的控件肯定不起作用,因为客户端控件与服务器端控件没有相同的ID。如果查看页面源代码,您的文本框不再称为'LoannNumber',因此.getElementById()将不起作用

解决办法是:

  • 使用控件的ClientID属性,就像在javascript注释中所做的那样

  • 要使用ASP.NET 4 ClientMode=“Static”具有可预测的客户端id,请执行以下操作


  • 我尝试了这两种建议,但都不起作用。有没有更好的方法来调用javascript中的代码,而不是让它保持静态?提前谢谢可能还有一个错误。你能在某处发布一个实时页面吗?否则:浏览器控制台中会显示什么?报告的JS错误是什么(如果有)?
        function loanCheckup() {
    
     // var txtLoanNum = document.getElementById('<%=LoanNumber.ClientID %>').value;
    
     var txtLoanNum = document.getElementById('LoanNumber').value;
    //return Regex.IsMatch(txtLoanNum, "^-?\d*[0-9]?(|.\d*[0-9]|,\d*[0-9])?$");
      PageMethods.getRowValue(txtLoanNum, successLoan,failLoan);
    
    
    }
    
    
     function successLoan(tmpResultPass) {
    
      alert(tmpResultPass);
     }
    
    
     function failLoan(tmpResultFail ) {
    
      alert(tmpResultFail);
     document.getElementById('LoanNumber').value = "";    
      }