如何在另一个字段lostfocus之后用数据库信息填充文本框

你能帮我找到解决问题的方法吗?

我有4个文本框字段: numberkeyfirstnamename

当我填写后从数字字段列表,我想检查我的数据库是否存在这个数字。

如果是这样,我的应用程序应该选择链接到该号码的名称和名字(在我的数据库中)并填写其他字段名称和名字,然后禁用这些字段。

我认为我应该使用ajax但我不知道如何使用ajax和Zend来实现它。

我搜索了网页,发现了一些我不理解的教程。

请你能一步一步地给我这样做吗?

谢谢

只是一般的笔触:

  1. 使用Zend_Form以标准方式生成表单。
  2. 在客户端(例如,使用jQuery),将onchange处理程序附加到数字字段。
  3. onchange处理程序对一个名为checkNumberExistsAction()的动作进行AJAX调用,该动作执行数据库查找。 返回包含检查结果的JSON格式信息。
  4. 然后,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(); }