1

我有一系列 div style="display:none;" 我为每个 div 使用 jquery show hide。

其中一个 div 是一个选择菜单,我想将表单提交给它自己 $_SERVER['PHP_SELF']。我如何提交表单但仍留在正确的当前 div 中。

提前致谢。

   <div style="display:none;">
    <form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post' name='form_filter' >
        <select id="employee_user" name="employee_user" onchange="this.form.submit();">
        <option value="">Select Staff</option>

    <?php  // $Id: emails.php, 27/06/2011 mbrennand
    $users_in_department = mysql_query('SELECT DISTINCT(employee) FROM holiday_entitlement_academic WHERE line_manager = \'' . $username. '\'');
    $users_in_department2 = mysql_query('SELECT DISTINCT(employee) FROM holiday_entitlement_business WHERE line_manager = \''.$username.'\'');

    while($user_in_dept = mysql_fetch_array($users_in_department)) {
    echo '<option value="'.$user_in_dept['employee'].'">'.$user_in_dept['employee'].'</option>';
    }
    while($user_in_dept2 = mysql_fetch_array($users_in_department2)) {
    echo '<option value="'.$user_in_dept2['employee'].'">'.$user_in_dept2['employee'].'</option>';
    }
    ?>    
    </select>
    </form>
    </div>


    <div style="display:none;">
    </div>

    <div style="display:none;">
    </div>

    <div style="display:none;">
    </div>

编辑....代码已修改

<script type="text/javascript">
$('#employee_user').on('change', function(){
    $.post('SELF', $('form input,form select').serializeArray(), function(data){
         // Form has submitted
    });
});
</script>

<div style="float:right;">
<form action='' method='post' name='form_filter' >
    <select id="employee_user" name="employee_user">
    <option value="">Select Staff</option>

<?php  // $Id: emails.php, 27/06/2011 mbrennand
$users_in_department = mysql_query('SELECT DISTINCT(employee) FROM holiday_entitlement_academic WHERE line_manager = \'' . $username. '\'');
$users_in_department2 = mysql_query('SELECT DISTINCT(employee) FROM holiday_entitlement_business WHERE line_manager = \''.$username.'\'');

while($user_in_dept = mysql_fetch_array($users_in_department)) {
echo '<option value="'.$user_in_dept['employee'].'">'.$user_in_dept['employee'].'</option>';
}
while($user_in_dept2 = mysql_fetch_array($users_in_department2)) {
echo '<option value="'.$user_in_dept2['employee'].'">'.$user_in_dept2['employee'].'</option>';
}
?>    
</select>
</form>
</div>
<h2>STAFF HOLIDAY LEAVE</h2>
<br/>

<?php
$username_indept = $_POST["employee_user"];

$is_academic_result = mysql_query('SELECT * FROM holiday_entitlement_academic WHERE employee = \'' . $username_indept . '\'');
$is_business_result = mysql_query('SELECT * FROM holiday_entitlement_business WHERE employee = \'' . $username_indept . '\'');

if($is_academic = mysql_fetch_array($is_academic_result)) {
    switch($is_academic['units']) {
        case 'days':
            include_once('admin_academic_days.php');
            break;
        case 'hours':
            include_once('admin_academic_hours.php');
            break;
        default:
            break;
}
} else if ($is_business = mysql_fetch_array($is_business_result)) {
    switch($is_business['units']) {
        case 'days':
            include_once('admin_business_days.php');
            break;
        case 'hours':
            include_once('admin_business_hours.php');
            break;
        default:
            break;
    }
} 
else {
         include_once('no_record.php');
}
?>
4

2 回答 2

3

有三种方法可以解决这个问题:

  • 使用 AJAX,在这种情况下页面不会更改并保持静态,在这种情况下您将留在正确的 div 中。
  • 使用与 AJAX 相同的 iframe 目标
  • 使用表单元素来了解已填写了多少表单并隐藏/显示依赖于此的页面部分。

另外作为提示,不要在表单提交中使用 PHP_SELF。这是不安全的。

AJAX 提交示例:

$('#employee_user').on('change', function(){
    $.post('SELF', $('form input,form select').serializeArray(), function(data){
         // Form has submitted
    });
});
于 2012-08-16T09:27:27.010 回答
2

两种选择:

  1. 通过ajax提交表单

  2. 在您的请求中提供一些信息,这些信息将确定在页面重新加载时最初应该显示哪个 div。

    这可以通过隐藏输入、动作查询参数action="?active_div=3"或类似的东西来完成。

顺便说一句,如果提交到当前 URL,您可以将action属性留空。

于 2012-08-16T09:25:47.943 回答