gpt4 book ai didi

html - 基于angularjs中的搜索水平滚动到动态列

转载 作者:行者123 更新时间:2023-11-28 02:36:49 24 4
gpt4 key购买 nike

在一个表中,我有多个带有水平滚动条的动态列。我需要实现搜索功能是用户搜索列名或列数据。如果列名和数据存在,那么我的滚动条应该滚动到特定的列。

我已尝试实现此功能,但无法弄清楚,而且我无法使用任何第三方库或工具来实现此小功能。

作为引用,我看到google chrome浏览器有这样的功能,如果我通过浏览器搜索它直接指向特定的列。我想要这样的东西,但不需要浏览器搜索或任何第三方工具。

var app = angular.module("myapp", []);
app.controller("ListController", ['$scope', function($scope) {
$scope.personalDetails = [
{
'fname':'Abc',
'lname':'Abc',
'email':'Abc@Abc.com',
'demo': 'xyz.com',
'Pnumber': '9892XXXXXX',
'Address': 'XYZ'
}
];
}]);
.btn-primary{
margin-right: 10px;
}
.container,.search{
margin: 20px 0;
}

form{
width: 200px;
overflow-y: hidden;
overflow-x: scroll;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="myapp" ng-controller="ListController">
<div class="container">
<div class="row">
<div class="col-md-8">
<div class='search'>
<input type="search" placeholder="search column" required/>
</div>
<form>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th><input type="checkbox" ng-model="selectedAll" ng-click="checkAll()" /></th>
<th>Firstname</th>
<th>Lastname</th>
<th>Email</th>
<th>demo</th>
<th>Phone number</th>
<th>Address</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="personalDetail in personalDetails">
<td>
<input type="checkbox" ng-model="personalDetail.selected"/></td>
<td>
<input type="text" class="form-control" ng-model="personalDetail.fname" required/></td>
<td>
<input type="text" class="form-control" ng-model="personalDetail.lname" required/></td>
<td>
<input type="email" class="form-control" ng-model="personalDetail.email" required/></td>
<td>
<input type="text" class="form-control" ng-model="personalDetail.demo" required/></td>
<td>
<input type="text" class="form-control" ng-model="personalDetail.Pnumber" required/></td>
<td>
<input type="text" class="form-control" ng-model="personalDetail.Address" required/></td>
</tr>
</tbody>
</table>

</form>
</div>
</div>
</div>
</body>

最佳答案

您可以通过使用一些 jQuery 函数来做到这一点,其中包括 angular.这是一个 JSFiddle

1)定义一个容器元素,滚动发生在该元素上

2)找到您的目标元素,然后滚动到它。

在你的 Controller 中

$scope.textChanged = function () 
{
var $container = $('#myform'),
$scrollTo = $('th').filter(function() {
return $(this).text() === $scope.filter;});

if($scrollTo.length > 0)
{
$container.scrollLeft(
$scrollTo.offset().left - $container.offset().left + $container.scrollLeft());
}
else
{
$container.scrollLeft(-$container.scrollLeft());
}

}

注意:如果要部分匹配,使用

$scrollTo =  $('th:contains(' + $scope.filter + ')');

然后,在您的 html 中:

<input type="search" ng-change='textChanged()' ng-model='filter' placeholder="search column" required/>

并在表单中添加id以正确定位

<form id='myform'>

最后将 $scope.filter 变量添加到您的 Controller

app.controller("ListController", ['$scope', function($scope) {
$scope.filter = '';

关于html - 基于angularjs中的搜索水平滚动到动态列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46762887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com