带有Javascript警报的PHP下拉菜单

时间:2012-05-16 15:55:16

标签: php javascript drop-down-menu alert

我在PHP中创建了一个简单的下拉菜单:

<td> Privilege: </td>
<td><select name="privilege">
<?php 
    $position_list = array(
                1 => "Chair", 
                2 => "SACA",
                5 => "Faculty",
                0 => "Disable User",
                );
    foreach ($position_list as $priv_id=>$position) {
    echo "<option value= \"{$priv_id}\"";
            if ($priv_id == $sel_user['privilege']) {
                 echo " selected"; 
            }
            echo ">{$position}</option>";   
    }   
?></td></select>        
        </tr>       
        </tr>

我想知道是否可以包含一些Javascript。因此,当用户选择“禁用用户”时,会显示一条消息“您确定要禁用此用户吗?”弹出。 提前感谢任何建议!

3 个答案:

答案 0 :(得分:1)

这里的问题不是显示警报 - 这很简单 - 但是跟踪select元素曾经拥有的值。毕竟,如果用户单击“否”并且用户仍被禁用,则没有多大用处。

为了做到这一点,我建议最简单的方法是使用隐藏的输入元素来存储原始值。然后,您可以参考以正确设置选项。

像这样的东西(这里纠正了HTML结构,请注意;-)):

<td>Privilege:</td>
<td>
  <!-- note the onchange event -->
  <select name="privilege" onchange="checkDisable(this);">
<?php 

    // Define the options
    $position_list = array(
      1 => "Chair", 
      2 => "SACA",
      5 => "Faculty",
      0 => "Disable User",
    );

    // Create the list
    foreach ($position_list as $priv_id=>$position) {
      echo "<option value= \"{$priv_id}\"";
      if ($priv_id == $sel_user['privilege']) {
        echo " selected=\"selected\""; 
      }
      echo ">{$position}</option>";   
    }   

?></select>
  <input type="hidden" id="privilege_old_val" value="<?php echo $sel_user['privilege']; ?>" />
  <script type="text/javascript">
    function checkDisable(element) {

      // Firstly check if the user selected the disable option, then get them to confirm it
      if (element.options[element.selectedIndex].value == 0 && !confirm("Are you sure you want to disable this user?")) {
        // If they didn't confirm it, loop the options...
        for (var i = 0; i < element.options.length; i++) {
          // Find the option with the old value...
          if (element.options[i].value == document.getElementById('privilege_old_val').value) {
            // ...and set the select back to that option
            element.selectedIndex = i;
          } // if
        } // for
      } // if

      // Update the input that tracks the old value with the current value
      document.getElementById('privilege_old_val').value = element.options[element.selectedIndex].value;

    }
  </script>
</td>

答案 1 :(得分:0)

是的,您可以使用onchange事件:

<select name="privilege" onchange="if(this.options[this.selectedIndex].value === 0)confirm('Are you sure you want to disable this user?')">

答案 2 :(得分:0)

这个JavaScript应该为你做到:

<select name="Select1" onchange="if(this.value==0) confirm('are you sure you want to disable this user?')">
<option value="1">Chair</option>
<option value="2">SACA</option>
<option value="5">Faculty</option>
<option value="0">Disable user</option>
</select>​​​