刷新后保持在同一页面上

stay at the same page after refresh

本文关键字:一页 刷新      更新时间:2023-09-26

>我有一个包含表单的页面,输入类型有一个 JavaScript 侦听器 选择 ,事件是 onchange,具体取决于从选择中选择的选项该页面将显示一个输入块 (div),我正在使用隐藏和显示来显示或隐藏 HTML 元素块,其中一个div (div 2) 的输入类型也带有 ajax 调用的 onchange 事件。我的第一个问题是,点击表单浏览器的验证按钮后,我希望他留在最后一个上一个div,第二个问题是刷新后的div 2不会带来任何数据,这是合乎逻辑的,因为事件正在发生变化。所以想要如果已经显示了div 2,ajax调用在刷新后工作。

这是我的 HTML 代码

 <form id="boxpanel" class="form-panel" method='POST' enctype='multipart/form-data' action='<?php echo URL.htmlspecialchars('ads');?>'>
      <div>
     <label for='catego'><b>categories: </b><span>(*)</span></label>
     <span><select name="catego" id="catego">
     <option value='0'>select a category </option>
      <?php
  foreach($this->categories as $key => $value) { ?>
      <option value=<?php echo $value['id'];?>  <?php if (isset($_POST['catego']) && $_POST['catego'] == $value['id']){ echo 'selected';}else{ echo '';}?>> <?php echo $value['categorie'] ;?></option>

        <?php 
    }
?>  
      </select><br /></span>
 </div>

 <div id="div12" class="hide">
<br />
 <div>
            <label for='mark'><b>cars:</b> <span>(*)</span></label>
      <select  name='cars' id='cars' onchange="showHint(this.value)">
       <option value=0>s1</option>
        <option value=2>s2</option>
         <option value=3>s3</option>

      </select>
      </div>
      <br />
      <div>
      <label for='categos'><b>Models:</b></label>
     <select id="txtHintts" name="model"  class="form-control">
     </select>
     </div>
      <br />
</div>
 <div id="div13" class="hide">
<br />
 <div>
            <label for='wheels'><b>wheels:</b> <span>(*)</span></label>
      <select  name='wheels' id='wheels'>
       <option value=0>c</option>
        <option value=2>v</option>
         <option value=3>v</option>

      </select>
      </div>
      <br />
      <div>
               <label for='wheels'><b>colors:</b> <span>(*)</span></label>
      <select  name='colors' id='colors'>
       <option value=0>a</option>
        <option value=2>d</option>
         <option value=3>c</option>

      </select>
     </div>
      <br />
</div>
</div>

这就是我制作隐藏和显示工作的方式

<script>
function catego() {     
    if ($('#catego').val() == 1 ) {
        $('#div12').removeClass('hide');
        $('#div13').addClass('hide');
    }
    if ($('#catego').val() == 2) {
        $('#div12').addClass('hide');
        $('#div13').removeClass('hide');
    }

}
$('#catego').on('change', catego);
$( document ).ready(function() {
    catego();
});
</script>

这是我的阿贾克斯电话

 <script>
function showHint(str) {
    if (str.length == 0) { 
        document.getElementById("txtHintts").innerHTML = "";
        return;
    } else {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("txtHintts").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET", "/gethint?q=" + str, true);
        xmlhttp.send();
    }
}
</script>

删除

<select  name='cars' id='cars' onchange="showHint(this.value)">

显示/隐藏完成后在 js 中调用此方法。另外,将所有 js 事件保存在 document.ready 中。