情况:用户提交表单。提交输入后进行测试。如果输入缺少某些东西,我想要一个“后退”按钮,滚动或跳转到未正确填充的部分。使用javascript返回是微不足道的,但随后滚动/跳转到锚点...
我试过
<BUTTON onClick='window.history.go(-1);location.hash = \"#anchor\" ;'>
不应重新加载页面以不更改已输入的用户输入。
问题是我首先必须使用window.history.back在提交表单之前返回页面。但我必须处理表单上的用户输入以了解缺少的内容。然后,在处理之后,我确切地知道要去哪里,但它是之前的页面。我不能使用href = gotopage.php#anchor,因为这会重新加载页面并删除用户在表单中输入的所有信息。 history.back保留用户输入,但从页面底部开始(firefox)。我不想 - 如果可能的话 - 使用javascript来测试用户输入。
答案 0 :(得分:0)
您应该存储要滚动到的元素的ID(使用url参数,cookie或localStorage
),然后使用您在上一个答案中喜欢的方法:
How can I scroll to a specific location on the page using jquery?
我会这样建议:
id
保存在 localStorage localStorage.setItem('scrollTo', '#anchor');
scrollTo
并根据需要滚动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