【发布时间】:2015-01-26 11:33:24
【问题描述】:
我的脚本中有一个选择下拉菜单,如果您单击一个条目,您会立即向该站点添加一个过滤器,以按类型对电影进行排序。剧本是闲的
<select name="genres" class="form-control" data-bind="value: genre">
<option value="">{{ trans('dash.genres') }}</option>
@foreach ($options->getGenres() as $genre)
<option value="{{ strtolower($genre) }}">{{ $genre }}</option>
@endforeach
</select>
现在我想将选择下拉菜单更改为复选框,我通过休闲实现了这一点
<ul>
@foreach ($options->getGenres() as $genre)
<li><input type="checkbox" name="genres" data-bind="value: genre" value="{{ strtolower($genre) }}"/>{{ $genre }}</li>
@endforeach
</ul>
但是如果我点击一个复选框,什么都不会发生,现在我希望它与一页过滤器结果一样。
选择下拉菜单会立即在页面上添加一个带有 js 的过滤器,我如何使用复选框来做到这一点?任何想法如何改变或什么?
编辑
这是点击选择后流派进入的列表
<ul id="selected-genres" data-bind="foreach: params.genres" class="list-unstyled list-inline">
<li data-bind="click: $root.removeGenre"><i class="fa fa-times"></i> <span data-bind="text: app.utils.ucFirst($data)"></span></li>
</ul>
这是这个函数的Js文件
(function($) {
'use strict'
app.viewModels.titles.index = {
/**
* Stores all the games in their original state.
*
* @type Array
*/
sourceItems: ko.observableArray(),
/**
* Latest genre user has selected.
*
* @type string,
*/
genre: ko.observableArray(),
/**
* Stores all parameters user is currently restricting titles query by.
*
* @type {Object}
*/
params: {
/**
* Currently selected sorting option.
*
* @type ko.observable(String)
*/
order: ko.observable('mc_num_of_votesDesc'),
/**
* Stores users query to filters games on.
*
* @type ko.observable(String),
*/
query: ko.observable().extend({ rateLimit: { method: "notifyWhenChangesStop", timeout: 400 } }),
/**
* Filter titles that were released after this date.
*
* @type ko.observable(String),
*/
after: ko.observable(),
/**
* Filter titles that were released before this date.
*
* @type ko.observable(String),
*/
before: ko.observable(),
/**
* Filter movies to only ones that specified actors appeared in.
*
* @type string
*/
cast: ko.observable(),
/**
* Filter titles by genres.
*
* @type string,
*/
genres: ko.observableArray(),
type: ko.observable(),
minRating: ko.observable(),
maxRating: ko.observable(),
},
/**
* Uri to hit for paginated results.
*
* @type {String}
*/
uri: 'titles',
/**
* Remove a genre from genres array.
*
* @param string genre
* @return void
*/
removeGenre: function(genre) {
app.viewModels.titles.index.params.genres.remove(genre);
},
start: function(type) {
var self = this,
genres = app.utils.getUrlParams('genre'),
page = window.location.hash,
paginations = $('.index-pagination');
self.params.type(type);
//filter by genres if they're present in url params
if (genres) {
$.each(genres.replace(/ /g,'').split(','), function(i,v) {
self.params.genres.push(v);
});
}
//push a genre user selects to genres array
self.genre.subscribe(function(value) {
if (value) {
self.params.genres.push(value);
}
});
//set a page if we found any in url hash
if (page) {
app.paginator.currentPage(page.replace('#page-', ''));
}
//change current page on url hash change
$(window).bind('hashchange', function(e, b, c) {
var hash = location.hash.slice(1);
if (hash.indexOf('page-') > -1) {
app.paginator.currentPage(hash.replace('page-', ''));
}
});
app.paginator.start(app.viewModels.titles.index, '#content', 18).success(function(data) {
paginations.pagination({
items: app.paginator.totalItems(),
itemsOnPage: app.paginator.perPage(),
displayedPages: 8,
selectOnClick: false,
});
});
app.paginator.paginate.subscribe(function(promise) {
promise.success(function(data) {
paginations.pagination('updateItems', app.paginator.totalItems());
paginations.pagination('updateItemsOnPage', app.paginator.perPage());
});
});
//scroll top when botom pagination is used
$('.bottom-pagination').on('click', function(e) {
if ( ! $(e.target).parent().is('.active')) {
var body = $('html, body');
body.animate({scrollTop:0});
}
});
},
};
})(jQuery);
它与 Knockout.js 一起使用,我不包括缩小的代码
谢谢你帮助我
【问题讨论】:
-
与我们分享您的 js 代码。也许那时我们可以提供帮助
-
我用 js 代码编辑了我的问题
标签: javascript php html mysql laravel