0

嘿,你们程序员过去对我非常有帮助,所以我想我会再次在这里问我的问题。这可能是一个简单的修复,但我是 JavaScript 和 Ajax 的新手。

我正在工作的是Ajax,它写入一个responseText,声明“未找到位置”,如果在文本字段失去焦点时找不到它。如果这个 responseText 存在,我想做的是阻止表单提交。如果隐藏字段的值为 LOCATION NOT FOUND,我知道如何防止表单提交,所以我认为让 JavaScript 用 responseText 填充隐藏字段可能是最简单的解决方案?不确定这是否可行或如何去做。

这是我当前的 JS:

 <script type="text/javascript">
  <!-- 
  function newXMLHttpRequest() 
  {
   var xmlreq = false;
   if (window.XMLHttpRequest) 
   {
    xmlreq = new XMLHttpRequest();
   } 
   else if (window.ActiveXObject) 
   {
    try 
    {
     xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e2) 
    {
     alert("Error: Unable to create an XMLHttpRequest.");
    }
   }
   return xmlreq;
  }
  function getLocation(locationrouting) 
    {
   var getLocation= newXMLHttpRequest(); // sending request
   getLocation.open("GET", "/PP?PAGE=GETLOCATIONNAME&ROUTINGNUM=" + locationrouting, false);
   getLocation.send(null); // getting location

     var dv = document.getElementById("location_div");

     if (getlocation.responseText === 'LOCATION NOT FOUND')
     {
       dv.style.color = "red";
     }
      else 
     {
      dv.style.color = "black";
    }
   dv.innerHTML = getLocation.responseText;
    }
  //-->
 </script>

以下是表格的适用部分:

    <form name="locationform" id="locationform" action="/PP?PAGE=POSTADDLOCATION" method="post">
        <tr>
         <td class="ajax_msg">
            <div id="location_div">/div>       
         </td>
        </tr>
        <tr>
     <td>
       <div class="column1" id="locationrouting_div">
             <p class="label_top">
*Routing Number</p>
         <p class="field_top">
                  <input type="text" id="locationrouting" name="locationrouting" size="28" maxlength="9" onblur="getLocation(this.value);" /></p>

    ...

提前致谢!

4

2 回答 2

1

作为一个选项,您可以创建 javascript 变量var isSubmitAllowed = true;,在找不到位置时将此变量设置为 false,并检查此变量以防止提交表单。

就像是:

<script type="text/javascript">
  <!-- 
  var isSubmitAllowed = true;

  function newXMLHttpRequest() 
  {
   var xmlreq = false;
   if (window.XMLHttpRequest) 
   {
    xmlreq = new XMLHttpRequest();
   } 
   else if (window.ActiveXObject) 
   {
    try 
    {
     xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e2) 
    {
     alert("Error: Unable to create an XMLHttpRequest.");
    }
   }
   return xmlreq;
  }
  function getLocation(locationrouting) 
    {
   var getLocation= newXMLHttpRequest(); // sending request
   getLocation.open("GET", "/PP?PAGE=GETLOCATIONNAME&ROUTINGNUM=" + locationrouting, false);
   getLocation.send(null); // getting location

     var dv = document.getElementById("location_div");

     if (getlocation.responseText === 'LOCATION NOT FOUND')
     {
       dv.style.color = "red";
       isSubmitAllowed = false;
     }
      else 
     {
      dv.style.color = "black";
      isSubmitAllowed = true;
    }
   dv.innerHTML = getLocation.responseText;
    }
  //-->
 </script>

然后在Form标签中,您可以添加将返回值的onSubmit事件处理程序:isSubmitAllowed

<form name="locationform" id="locationform" action="/PP?PAGE=POSTADDLOCATION" method="post" onSubmit="return isSubmitAllowed">
于 2010-08-12T16:43:23.933 回答
0

如果您不想在找不到位置的情况下提交表单,最简单的方法可能是在提交之前查询服务器。这比通过其副作用检查以前可能发生或未发生的查询的状态更容易实现和使用。:D

于 2010-08-12T16:40:16.577 回答