如何在另一个字段lostfocus之后用数据库信息填充文本框
你能帮我找到解决问题的方法吗?
我有4个文本框字段: number
, key
, firstname
和name
。
当我填写后从数字字段列表,我想检查我的数据库是否存在这个数字。
如果是这样,我的应用程序应该选择链接到该号码的名称和名字(在我的数据库中)并填写其他字段名称和名字,然后禁用这些字段。
我认为我应该使用ajax但我不知道如何使用ajax和Zend来实现它。
我搜索了网页,发现了一些我不理解的教程。
请你能一步一步地给我这样做吗?
谢谢
只是一般的笔触:
- 使用
Zend_Form
以标准方式生成表单。 - 在客户端(例如,使用jQuery),将onchange处理程序附加到数字字段。
- onchange处理程序对一个名为
checkNumberExistsAction()
的动作进行AJAX调用,该动作执行数据库查找。 返回包含检查结果的JSON格式信息。 - 然后,AJAX调用的成功函数检查返回结果,填充和禁用其他元素。
需要记住的一点是:不要仅依靠此客户端处理来阻止提交禁用字段。 用户可以在客户端禁用脚本,因此请务必进行服务器端validation。
我完全同意@David的方法,并为了纪念这个,发布这个骨架代码:
sampleview.phtml
echo ''.$this->form.''; jQuery()->onLoadCaptureStart(); ?> jQuery('#category').change(checkNumberExistsAction); jQuery()->onLoadCaptureEnd(); ?>
IndexController.php
public function sampleviewAction(){ if ($this->getRequest()->isXmlHttpRequest()){ $id = $this->_getParam('number', 0); if ($id > 0){ $albums = new Application_Model_DbTable_Albums(); $form->populate($albums->getAlbum($id));} } }
Modelsampleview.php
public function getAlbum($id){ $id = (int)$id; $row = $this->fetchRow('e_recNo = ' . $id); if (!$row){ throw new Exception("Could not find row $id"); } return $row->toArray(); }