0

ねえ、あなたのプログラマーは過去に私に非常に助けてくれたので、ここでもう一度質問したいと思いました。おそらく簡単な修正ですが、JavaScriptとAjaxは初めてです。

私が取り組んでいるのは、テキストフィールドがフォーカスを失ったときに見つからない場合に「LOCATIONNOTFOUND」という応答テキストに書き込むAjaxです。私がしたいのは、このresponseTextが存在する場合にフォームが送信されないようにすることです。非表示フィールドの値がLOCATIONNOTFOUNDの場合にフォームが送信されないようにする方法を知っているので、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タグに追加できます。onSubmitisSubmitAllowed

<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 に答える