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

时间:2012-01-10 23:14:18

标签: jquery zend-framework zendx

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

我有4个文本框字段:numberkeyfirstnamename

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

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

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

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

请你能一步一步地给我这个吗?

由于

2 个答案:

答案 0 :(得分:1)

只是一般的笔触:

  1. 使用Zend_Form以标准方式生成表单。
  2. 在客户端(例如,使用jQuery),将onchange处理程序附加到数字字段。
  3. onchange处理程序对一个名为checkNumberExistsAction()的动作进行AJAX调用,该动作执行数据库查找。返回包含检查结果的JSON格式信息。
  4. 然后,您的AJAX调用的成功函数会检查返回结果,填充和禁用其他元素。
  5. 要记住的一点是:不要仅仅依靠此客户端处理来阻止提交禁用字段。用户可以在客户端禁用脚本,因此请务必进行服务器端验证。

答案 1 :(得分:0)

我完全同意@David方法,并且为了纪念这个问题,发布这个骨架代码:

<强> sampleview.phtml

echo '<div id="a">'.$this->form.'</div>';

<?php $this->jQuery()->onLoadCaptureStart(); ?>
jQuery('#category').change(checkNumberExistsAction);
<?php $this->jQuery()->onLoadCaptureEnd(); ?>


<script type="text/javascript">
    function checkNumberExistsAction(){         
    var p = $("#idOfNumberField").val();
    var response =   $.ajax({
        url: "<?php echo $this->url(array('controller'=>'index',
'action'=>'sampleview')) ?>", 
        type: "GET",       
        data: {number: p}, //where number is number columnName in database
        cache: false,
        success: function(text){
           response = text;
            $("#name").val($(text).find("input[name='name']").val());  //where name is id of name field
            $("#name").attr("disabled", "disabled");
            $("#firstName").val($(text).find("input[name='firstName']").val());  //where firstName is id of first name field
            $("#firstName").attr("disabled", "disabled");            
},
error: function(){ alert('Something went wrong.'); }
    });
}
</script>

<强> 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();
}