【问题标题】:Cannot get submit button to POST or Autocomplete to fill无法将提交按钮提交到 POST 或自动完成以填写
【发布时间】:2010-02-17 14:24:10
【问题描述】:

我的应用程序更新了一些框架以及 jquery,但现在无法正常工作。我不知道该怎么做,因为我没有得到有用的信息来调试。这就是我要找的东西:

GIVEN:我在带有文本字段和提交按钮的选定页面上 何时:我在文本框中输入几个字母 那么:我希望使用与数据库中的值匹配的可用帐户自动完成。

GIVEN:我看到了一个想要添加到列表中的值 何时:我点击“添加” THEN:我想通过 Ajax 查看面板中显示的选定值(无需刷新页面):

这是自动完成的代码:

    $this->btnAddOffer = new QButton($this->pnlAddOffer,"btnAddOffer");

    $this->btnAddOffer->CssClass =  "button";

    $this->btnAddOffer->Text = "Add";
    $this->txtNewOffer->AddAction(new QEnterKeyEvent(), new QAjaxAction('btnAddOffer_Click'));
    $this->txtNewOffer->AddAction(new QEnterKeyEvent(), new QTerminateAction());

    $this->btnAddOffer->AddAction(new QClickEvent(), new QAjaxAction('btnAddOffer_Click'));

和:

protected function btnAddOffer_Click($strFormId, $strControlId, $strParameter) {
    if($this->txtNewOffer->Text == ''){

        $this->txtNewOffer->Warning = "You must be enter a offer company name!";
        return false;

    }
    $objUser = unserialize($_SESSION['User']);

    $objAccount = Account::LoadByName($this->txtNewOffer->Text);

    if($objAccount){
        $objUser->AccountId = $objAccount->Id;
        $objOffer = Offer::LoadByUserOwnerIdAccountId($objUser->Id,$objAccount->Id);
        if($objOffer){

            QApplication::DisplayAlert("This account already exists!!");

        } else {

            $objOffer = new Offer();
            $objOffer->UserOwnerId = $objUser->Id;
            $objOffer->AccountId = $objAccount->Id;
            $objOffer->Save();

            #QApplication::DisplayAlert("New account was added successfully");
        }
    }

我目前得到的结果:

  • 当我在文本框中输入内容时,我看到一个带有以下 Firebug 的空表单:

alt text http://img707.imageshack.us/img707/5102/screenshot2162010102232.png

我不知道该怎么做,因为我没有信息可以调试正在发生的事情。

这是使用 Firebug 对输入框和提交按钮周围生成的代码的屏幕截图:

alt text http://img535.imageshack.us/img535/9148/screenshot292010113245a.png

控制器中的相关代码:

更多细节可以在这里找到:

http://github.com/allyforce/AF-upload/blob/master/Library/Offer.class.php

【问题讨论】:

  • 你能提供一个示例页面吗?
  • 是的,让我修复这些页面,看看我能不能做到。
  • @Angela:嗯?我只是要求一个示例页面,因为我无法使用 Firebug 屏幕截图。
  • 您是指屏幕截图或实时页面的 URL?
  • 在我看来不像自动完成代码,看起来像 btnAddOffer 的事件处理程序。您使用的是什么自动完成代码?不久前在 QCodo 论坛上发布了一个使用 jQuery AutoComplete 的示例,我最终在我的项目中使用了该示例。它为您提供了一个 QAutoCompleteTextBox 控件,该控件又提供了一个 QAutoCompleteTextBoxEvent。在调用此事件时,它返回(通过回显)条目数组中与迄今为止键入的文本匹配的每个元素(使用 QQuery)。如果您正在使用这种方法(或想要!),请告诉我,我会发布一些示例代码作为答案

标签: php debugging autocomplete


【解决方案1】:

您是否定义了事件调用的方法。查看您的屏幕截图,您使用的是 QAjaxAction 而不是 QServerAction,但是您是否告诉过它要调用的方法,例如:-

$this->btnAddOffer->AddAction(new QClickEvent(), new QAjaxAction('btnAddOffer_click'));

然后

protected function btnAddOffer_click()
{
    // submit code you want here
}

【讨论】:

  • 啊,宇宙中使用QCodo的两个人之一!太好了,谢谢。我会把我的代码放在上面
  • 认为我们明白了..谢谢!您仍然使用 QCodo 作为主要框架,还是使用其他东西作为选项或替代方案?谢谢!
  • 在我做 PHP 的时候仍然使用它,但我主要是一个 .Net 开发人员。 PHP 是我的副业 ;-)
【解决方案2】:

您是否有任何可能隐藏 id“btnAddOffer_ctl”的 javascript 或 CSS。那将是我要搜索的第一件事。在源代码中查找字符串 bntAddOffer_ctl。有可能此 id 的 visibility CSS 设置为 hidden

你也可以有一个如下所示的 JavaScript 部分:

document.getElementByid('btnAddOffer_ctl').style.visibility = 'hidden'; 

document.btnAddOffer_ctl.visibility = 'hidden'; 

希望对您有所帮助。

【讨论】:

  • 我可能是错的,但我认为问题是附加到按钮的事件没有触发,而不是按钮没有显示
  • 是的,Rob,你是对的,这是因为按钮上的事件没有触发......!
【解决方案3】:

将按钮类型更改为提交而不是“按钮”(或确保分配给“按钮”的任何操作都执行您希望它执行的操作 - 因为我们看不到该函数应该使用这张图片调用什么)

【讨论】:

    猜你喜欢
    • 2019-01-31
    • 1970-01-01
    • 2020-07-27
    • 2013-01-14
    • 2022-11-24
    • 2016-02-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    相关资源
    最近更新 更多