JavaScript / Ajax: заполнить скрытое поле - PullRequest
0 голосов
/ 12 августа 2010

Эй, вы, программисты, очень помогали мне в прошлом, поэтому я решил снова задать свой вопрос здесь.Это, вероятно, простое исправление, но я новичок в JavaScript и Ajax.

Я работаю с Ajax, который записывает в текст отклика сообщение «LOCATION NOT FOUND», если оно не найдено, когда текстовое поле теряет фокус.Что я хотел бы сделать, это запретить отправку формы, если присутствует этот 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>

    ...

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 12 августа 2010

В качестве опции вы можете создать переменную 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">
0 голосов
/ 12 августа 2010

Если вы не хотите, чтобы форма отправлялась, если местоположение не найдено, возможно, самым простым способом было бы просто запросить сервер перед отправкой.Это гораздо проще реализовать и использовать, чем проверять состояние запроса, который мог или не мог произойти ранее через его побочные эффекты.: D

...