如何在 CakePHP 中创建智能自动完成表单字段?
我想在我的表单中创建一个自动完成字段..
每次更改字段内容时,该字段都会给出建议..
当用户提交时,如果数据库中不存在键入的数据,则应创建它...
顺便说一句,我更喜欢对任何 javascript 代码使用 jQuery...
任何有关执行此操作的指导将不胜感激...
提前感谢
I want to create an auto complete field in my form..
the field will give suggestions every time the content of the field is changed..
when the user submits, if the typed data doesn't exist in the database, it should be created...
btw, i prefer to use jQuery for any javascript code...
any guidance for doing this will be appreciated...
thanx in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我想最好的方法是检查Jquery Autocomplete的文档 并查看哪种访问自动完成数据的方式适合您的情况。
假设您将使用带有远程数据源的方法,您可以在控制器中创建一个操作,该操作以 JSON 格式返回所需的数据,并将自动完成脚本指向此操作。
至于自动保存任何不存在的数据,您可以在另一个控制器操作(提交表单时触发的操作)中处理该操作,该操作检查提交的数据是否存在,如果不存在,则创建一个新条目。
I guess the best approach would be to check the documentation for Jquery Autocomplete and see which way to access the autocomplete data is suitable for your situation.
Assuming you'll use a method with a remote datasource you create an action in your controller that returns the required data in JSON format and point your autocomplete script to this action.
As for saving any non-existing data automatically, that's something you can handle in another controller action (the one that gets fired when you submit the form) that checks if the submitted data exists and if not, creates a new entry.
如果您想将
自动完成
功能集成到Cake现有的JsHelper
中,则无法开箱即用。您必须扩展JsHelper
和JQueryEngine
类才能执行此操作。我在这里写了一些说明:https://groups.google.com /d/topic/cake-php/aZo37UT1wp8/discussion
否则,您可以在视图模板中的
标记内包含原始 JavaScript/jQuery 代码。
希望这有帮助,
If you would like to integrate the
autocomplete
functionality into Cake's existingJsHelper
, you can't do so out of the box. You have to extend theJsHelper
andJQueryEngine
classes to do it.I've written some instructions here: https://groups.google.com/d/topic/cake-php/aZo37UT1wp8/discussion
Otherwise, you can just include raw JavaScript/jQuery code in your view templates inside
<script>
tags.Hope this helps,