javascript - 使用 jquery 自动滚动到可滚动弹出 div 的顶部

标签 javascript jquery html css ajax

首先,我有一个弹出式 div,其中包含一个表单

这是我的div

<div class="addnewrule" id="add_message_0">
       <form method="post" action="" id="frmadd">
        <input type="hidden" name="filter" value="1">
        <input name="rule_id" type="hidden" value="0">
      <table class="table-responsive" width="100%" border="0" cellspacing="0" cellpadding="10" id="" style="text-align:center; margin-top:0px;">
      <tr>
        <td colspan="2" align="left"><div id="display_msg_0"></div></td>
      </tr>
      <tr>
        <td width="40%" align="left">Name:</td>
        <td width="60%" align="left"><input class="input_field" name="rule_name" type="text"></td>
      </tr>
      <tr>
        <td align="left">Type:</td>
        <td align="center">
        <input type="radio" name="rule_type" value="0" style="display:none;"   />
        <input type="radio" name="rule_type" value="1" checked="checked" style="display:none;"  />
        <div class="btn-group equal_btn">
            <button id="block_click" class="btn btn-default" type="button" onclick="setRules(0);">Block Clicks</button>
            <button id="filter_click" class="btn btn-default active" type="button" onclick="setRules(1);">Filter Clicks</button>
          </div></td>
      </tr>
      <tr>
        <td align="left">Rule Active:</td>
        <td align="center">
        <input type="radio" id="active_0" name="active" value="1" checked="checked" style="display:none;"  />
        <input type="radio" id="inactive_0" name="active" value="0" style="display:none;" />
        <div class="btn-group">
            <button type="button" id="status_enb_0" class="btn btn-default active_btn active" onclick="setruleStatus(0,1);">Enable</button>
            <button type="button" id="status_dis_0" class="btn btn-default inactive_btn" onclick="setruleStatus(0,0);">Disable</button>
          </div></td>
      </tr>
      <tr>
        <td align="left">Campaign ID:</td>
        <td align="left"><input class="input_field" name="camp_id" type="text" /></td>
      </tr>
      <tr>
        <td align="left" id="rRange">Filter IP Ranges:</td>
        <td align="left"><table width="100%" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td style="padding:0;" width="45%"><input class="input_field" name="start_ip" type="text" /></td>
              <td width="10%" align="center">To</td>
              <td style="padding:0;" width="45%" align="right"><input class="input_field" name="end_ip" type="text" /></td>
            </tr>
          </table></td>
      </tr>
      <tr>
        <td align="left" id="rUAs">Filter users agents that contains:</td>
        <td align="left"><input class="input_field" name="user_agent" type="text" /></td>
      </tr>
      <tr>
        <td align="left" id="rRefs">Filter referers that contains:</td>
        <td align="left"><input class="input_field" name="referer" type="text" /></td>
      </tr>
      <tr id="rUrl" style="display:none;">
        <td align="left">Send Blocked Clicks to:</td>
        <td align="left"><input class="input_field" type="text" id="rule_url" name="rule_url" value="" /></td>
      </tr>
      <tr>
        <td align="left" colspan="2"><table class="copypaste" width="100%" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td><a href="javascript:void(0)" class="btn blue_button tab2" onclick="submitRule('frmadd',0);">Apply</a> <a href="javascript:void(0)" class="btn orange_button tab2" onclick="cancel_popup('add_new_rule')" >Cancel</a></td>
            </tr>
          </table></td>
      </tr>
    </table>
    </form>
    </div>

现在,这里是下面给出的 jquery ajax 函数。它检查验证并在消息 div 中显示验证消息...

function submitRule(frmId,rule_id)
{
    var data=$('#'+frmId).serializeArray();
    $.ajax({
        type:'POST',
        url:'ajax/rule_update_process.php',
        data: data,
        dataType:'json',
        success:function(jData)
        {
            if(jData.status==1)
            {
                $("#display_msg_"+rule_id).html(jData.error);
                $("#display_msg_"+rule_id).addClass('error');
                var child_div = $("#display_msg_"+rule_id);
                var parent_div = $("#add_message_"+rule_id);
                parent_div.scrollTop(parent_div.scrollTop() + child_div.position().top);
            }
            else
            {
            window.location.href='settings_rules.php';
            }
        }
      });
}

由于弹出窗口是一个可滚动的 div,我想滚动(仅在弹出 div 内)到顶部,以便我可以显示带有错误消息的消息 div..

以下是我如何获取屏幕。

enter image description here

enter image description here

我用这段if代码滚动到弹出div的顶部以显示错误消息div,

但是这段代码好像不行..

我做错了什么??

$("#display_msg_"+rule_id).html(jData.error);
$("#display_msg_"+rule_id).addClass('error');
var child_div = $("#display_msg_"+rule_id);
var parent_div = $("#add_message_"+rule_id);
parent_div.scrollTop(parent_div.scrollTop() + child_div.position().top);

最佳答案

用这个替换你的最后一行代码 parent_div.scrollTop(0,0);

关于javascript - 使用 jquery 自动滚动到可滚动弹出 div 的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28273321/

相关文章:

javascript - 如何创建包含对象和数组的MongoDB文档,以及Mongoose中相应的方案?

javascript - 如何迭代此 json 结构以生成另一个结构?

javascript - 如何使用 jQuery 或 JavaScript 从动态创建的按钮中获取点击事件对象数据

javascript - 图片库集成到网页中

html - 内容容器下的 CSS 下拉菜单

javascript - 如何在 HTML5 中访问 CSV 平面文件?

javascript - 在 Create-React-App 中输入具有解构赋值参数的函数时出现意外标记

jquery - 对于 CakePHP 自动完成来说,这是可接受的 Ajax 操作吗?

javascript - 自动点击iframe

html - 在每第 10 个 div 元素之后隐藏前 4 个 div