javascript:如何返回并滚动/跳转到锚点

时间:2016-06-02 13:46:37

标签: javascript jquery

情况:用户提交表单。提交输入后进行测试。如果输入缺少某些东西,我想要一个“后退”按钮,滚动或跳转到未正确填充的部分。使用javascript返回是微不足道的,但随后滚动/跳转到锚点...

我试过

 <BUTTON onClick='window.history.go(-1);location.hash = \"#anchor\" ;'>

不应重新加载页面以不更改已输入的用户输入。

问题是我首先必须使用window.history.back在提交表单之前返回页面。但我必须处理表单上的用户输入以了解缺少的内容。然后,在处理之后,我确切地知道要去哪里,但它是之前的页面。我不能使用href = gotopage.php#anchor,因为这会重新加载页面并删除用户在表单中输入的所有信息。 history.back保留用户输入,但从页面底部开始(firefox)。我不想 - 如果可能的话 - 使用javascript来测试用户输入。

3 个答案:

答案 0 :(得分:0)

您应该存储要滚动到的元素的ID(使用url参数,cookie或localStorage),然后使用您在上一个答案中喜欢的方法:

How can I scroll to a specific location on the page using jquery?

我会这样建议:​​

  1. 按下后退按钮时,将元素的id保存在 localStorage
  2. localStorage.setItem('scrollTo', '#anchor');
    
    1. 加载页面时,请检查 localStorage 中的scrollTo并根据需要滚动
    2. if(localStorage.scrollTo != undefined) {
          window.location.hash = localStorage.scrollTo;
          localStorage.removeItem('scrollTo');
      }
      

答案 1 :(得分:0)

如果表单的每个部分都有一个id,您可以使用锚标记,例如:

<a href="#<INCOMPLETE ID>"> Back </a>

答案 2 :(得分:0)

要在您跳回上一页时重置页面落地的位置,您可以使用

-(id)initWithFrame:(CGRect)frame {

self = [super initWithFrame:frame];
if (self) {

     _previewImages = [[NSMutableArray alloc]initWithObjects:[UIImage imageNamed:@"belleIsle-1"], [UIImage imageNamed:@"belleIsle-2"], [UIImage imageNamed:@"old_english_D"], nil];

    [[NSBundle mainBundle]loadNibNamed:@"MapAnnotationCalloutView" owner:self options:nil];

    [_mediaCollectionView registerNib:[UINib nibWithNibName:@"MediaPreviewCell" bundle:nil] forCellWithReuseIdentifier:@"mediaCell"];


    _mediaCollectionView.backgroundColor = [UIColor clearColor];

    self.bounds = _view.bounds;

    [self addSubview:_view];

   }
  return self;
}


- (MediaPreviewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

MediaPreviewCell *cell = [_mediaCollectionView dequeueReusableCellWithReuseIdentifier:@"mediaCell" forIndexPath:indexPath];

UIImageView *mediaImageView = (UIImageView *)[cell viewWithTag:100];

mediaImageView.image = [_previewImages objectAtIndex:indexPath.item];

return cell;
}

在&#39; top&#39;之后,输入您想要的偏移量(它会自动将数字转换为px)。例如:

scrollTop: $(this).offset().top