将变量传递给弹出框

时间:2016-12-17 16:05:56

标签: php html popup

我在php中传递变量有点复杂的问题。

我已经在html <ul>标签中列出并嵌套了项目,并且我有按钮的每个项目附近应该编辑目录或文件的名称(<ul>列表是从服务器中的现有目录树视图生成的)。

我设法制作一个弹出窗体让用户输入新名称,并且我有旧名称的路径。

列出index.html中的部分(生成):

<ul>
<li>
  <p>folder</p>
  <div class="edit-button">
    <a href="index.php?path=!working part with getting path!></a>
  </div>
  <ul>
    <li>
    ... and here subfolders etc
    </li>
  </ul>
</li>
</ul>
index.html中

popup表单部分:

<div id="popupEdit" class="popupEdit">
    <?php $path = $_GET['path']; ?>
    <div class="popupEdit-content">
        <form action="rename.php" method="post">
            <input type="text" name="path" value="<?php echo $path; ?>" >
            <input type="text" name="new-name" placeholder="nowa nazwa">
            <input type="submit" value="Submit" class="popupEdit-submit">
        </form>
    </div>
</div>

名称为path的第一个输入将被隐藏以通过文件的路径。 rename.php可以正常使用静态新名称,因此它只是将new-name传递到该文件中。

所以这里有两个主要问题:

  1. 当我点击编辑按钮后打开弹出窗口时我刷新了页面(因为a标签)所以我的弹出窗口不会持续很长时间,因为在默认情况下(刷新后)弹出窗口有display: none
  2. 第一次点击按钮后我没有path属性进入input但是当网站的网址已经填满了?path=...部分时,它会很好并且会弹出半秒(在重新加载之前)我能够看到名称为path的输入正确地填充了路径。
  3. 我认为可以使用ajax请求,但我不知道如何使这成为可能。

    我只想编辑当前节点名称,也许有更简单的方法来执行此操作?

1 个答案:

答案 0 :(得分:1)

我认为最好的选择是使用jQuery。这是一个工作示例,动态设置表单的路径

$('.toggler').click(function(){
  var path = $(this).attr('path');
  $('#popupEdit').css('display','block');
  $('.pathinput').val(path);
  $('.path').text(path);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button class="toggler" path="example text">Click Me</button>
<button class="toggler" path="example text 2">Click Me 2</button>
<button class="toggler" path="example text 3">Click Me 2</button>



             
<div id="popupEdit" class="popupEdit" style="display: none">
    <p class="path"></p>
    <div class="popupEdit-content">
        <form action="rename.php" method="post">
            <input type="text" name="path" class="pathinput" value="PATHHERE" >
            <input type="text" name="new-name" placeholder="nowa nazwa">
            <input type="submit" value="Submit" class="popupEdit-submit">
        </form>
    </div>
</div>