Javascript jQuery动态更新字段滚动页面

Javascript jQuery动态更新字段滚动页面,javascript,jquery,html,Javascript,Jquery,Html,我有一个用户填写的表单,点击“保存”,它就会被下放到一个表中。从那里他们可以编辑或删除一行 但是,每次从表中添加或删除某些内容,或者将字段从表中重新填充到表单中(从而从表中删除,直到再次保存),页面都会跳回顶部 因此,每当用户更新此区域时,他们都必须向下滚动,这是一个相当大的表单。我有一个崩溃的大部分部分,但像我一样,我怀疑用户会离开他们开放,因为他们向下移动 有人知道这是什么原因吗?有没有什么简单的方法可以避免?我对jQuery甚至JS都是非常陌生的,我大部分时间都是在服务器端度过的 编辑:添

我有一个用户填写的表单,点击“保存”,它就会被下放到一个表中。从那里他们可以编辑或删除一行

但是,每次从表中添加或删除某些内容,或者将字段从表中重新填充到表单中(从而从表中删除,直到再次保存),页面都会跳回顶部

因此,每当用户更新此区域时,他们都必须向下滚动,这是一个相当大的表单。我有一个崩溃的大部分部分,但像我一样,我怀疑用户会离开他们开放,因为他们向下移动

有人知道这是什么原因吗?有没有什么简单的方法可以避免?我对jQuery甚至JS都是非常陌生的,我大部分时间都是在服务器端度过的

编辑:添加HTML:

<div class="scroll">
    <table class="table table-condensed table-striped table-bordered scroll">
        <thead>
            <tr>
                <th>Product</th>
                <th colspan="2">Units</th>
                <th>Pieces</th>
                <th>UOM</th>
                <th>NMFC</th>
                <th>Hazmat</th>
                <th>class</th>
                <th>weight</th>
                <th>L</th>
                <th>W</th>
                <th>H</th>
                <th>Cube</th>
                <th>Density</th>
                <th></th>
                <th></th>
            </tr>
        </thead>
        <tbody id="productTable">
        </tbody>
    </table>
</div>

产品
单位
件
计量单位
NMFC
危险品
班
重量
L
W
H
立方体
密度
试试这个

$(SAVE/EDIT).click(function () {

  // your code 

  return false; //add this
});

最可能的罪魁祸首是实际元素的高度发生变化,导致包含元素的页面调整大小以适应它们。从那里看,这看起来像一个滚动动作

在这个JSFIDLE上,尝试在表中创建许多元素,然后单击它们以删除它们并将它们放回表单中。您将看到,一旦有足够的元素,页面就会滚动

我敢打赌,实现表更新的方法是删除整个表并重建它?如果是这样,请尝试执行JSFIDLE中示例的增量更新:

$(function() {
    $(":button").click(function(event) {
        //Make a new table row (but don't insert it just yet
        var newTableRow = $("<tr/>");

        //For every textbox, add a corresponding data column to the new table row
        $.each($(":text"), function(index, obj) {
            //Store the id of the textbox the data is from in the "from" attribute.
            newTableRow.append('<td from="' + $(this).prop("id") + '">' + $(this).val() + '</td>');
        });
        //Append the row to the table
        newTableRow.appendTo("table");
        //When the row is clicked
        newTableRow.click(function() {
            //$(this) refers to the row element here
            //For every child element (td element)
            $.each($(this).children(),function(index, obj) {
                //$(this) refers to the td element here
                //In the textbox with the id we previously stored in the from attribute
                //Set the value of that textbox to the value of this td
                $("#" + $(this).attr("from")).val($(this).text());
            });
            //$(this) refers to the row element here
            $(this).remove();
        });
        //Reset the form
        //$("form")[0].reset();
        event.preventDefault();
    });
});
$(函数(){
$(“:按钮”)。单击(函数(事件){
//创建一个新的表行(但暂时不要插入它)
var newTableRow=$(“”);
//对于每个文本框,向新表行添加相应的数据列
$。每个($(“:text”)函数(索引,obj){
//将数据来自的文本框的id存储在“from”属性中。
newTableRow.append(“”+$(this.val()+“”);
});
//将行追加到表中
newTableRow.appendTo(“表格”);
//单击该行时
newTableRow.单击(函数(){
//$(this)指此处的行元素
//对于每个子元素(td元素)
$.each($(this).children(),函数(索引,obj){
//$(此处)指的是td元素
//在文本框中,使用我们先前存储在from属性中的id
//将该文本框的值设置为该td的值
$(“#”+$(this.attr(“from”).val($(this.text());
});
//$(this)指此处的行元素
$(this.remove();
});
//重新设置表单
//$(“表单”)[0]。重置();
event.preventDefault();
});
});

Post HTML代码,如果表格中包含您填写到表格中的数据,则所有包含数据的表格都会被添加/删除。要编辑一行,将其删除,然后作为新行再次添加。如何提交表格?页面跳转时?用户单击表格数据或保存回表格时?@InTry form从不“提交”单击事件将“绑定”到保存、编辑和删除按钮。感谢您的回复。重建整个表将需要太多jQuery工作,超出我的意愿。当用户编辑该行时,该行的数据将重新填充到表单中,然后是$('#row_1')。remove()然后,当他们使用新ID再次保存该行时,我只需将其添加回去。我确信一旦添加了足够多的元素,页面就会滚动,但我选择了上一个答案,因为即使只是填充字段(从后端API到搜索联系人),也会发生“跳转”,并返回false;解决了所有跳转问题。