我正在使用JQuery UI自动完成.一切都按预期工作,但是当我使用键盘上的上/下键循环时,我注意到文本框中的项目按预期填充,但是当我到达列表的末尾并再按下向下箭头时时间,我键入的原始术语显示,这基本上允许用户提交该条目.
我的问题:是否有一种简单的方法可以将选择限制在列表中的项目中,并从键盘选择中删除输入中的文本?
例如:如果我有一个包含的列表{'Apples (AA)', 'Oranges (AAA)', 'Carrots (A)'}
,如果用户键入'app',我将自动选择列表中的第一项(此处为'Apples(AA)'),但如果用户按下向下箭头,'app'再次出现在文本框中.我怎么能防止这种情况?
谢谢.
我是整个客户端SPA世界的新手.我正在使用上述技术,这似乎很有前途.然而,一个我无法轻易克服的巨大障碍是缺乏内置安全性.我不得不手动推出用户授权,恕我直言应该是框架的一部分.
现在我已对其进行了排序,我对垂直安全性感到头疼:一个用户登录但可以通过更改浏览器控制台中的一些参数轻松访问其他用户的信息.我可以在每次调用时传递userId,然后将其与服务器上的那个进行比较,但我希望有一个总体解决方案,不会污染用户ID的微风数据调用.
例如,假设有一个来自数据服务的调用,如下所示:
function getItems(){
var query = breeze.EntityQuery.from('Items').expand("Person");
return manager.executeQuery(query);
}
Run Code Online (Sandbox Code Playgroud)
这将得到所有项目,不好.所以让我们限制userId:
function getItems(userId){
var query = breeze.EntityQuery.from('Items').where("userId", "==", authentication.userId).expand("Person");
return manager.executeQuery(query);
}
Run Code Online (Sandbox Code Playgroud)
在第二个示例中,我们从身份验证服务获取userId,该服务在用户登录时存储userId.但是,恶意用户可以轻松访问浏览器控制台并更改该值.
当然,我可以使用withParameters(...)传递userId并将其与服务器上的当前版本进行比较,但我必须为每次调用执行此操作,这似乎不正确.有没有更好的方法来保护可信用户ID的呼叫?
我有一个返回项目计数的复杂查询.如果我在客户端上运行查询,它是否总是返回对象,或者有没有办法只返回项目计数而不在有效负载中发送对象数组?我试过做类似的事情
var query = breeze.EntityQuery.from('Items').inlineCount(true);
Run Code Online (Sandbox Code Playgroud)
但这仍然会拉低所有记录.有解决方案吗