【问题标题】:Yii form not rendering in JavascriptYii 表单未在 Javascript 中呈现
【发布时间】:2019-02-15 15:45:18
【问题描述】:

我对 Yii 很陌生,所以我不确定这是否是我自己搞砸了。

我正在尝试遍历渲染的远程搜索表单数组,并让 innerHTML 根据用户选择的任何搜索类型的索引显示正确的表单。

每当我将 php 表单渲染放入数组时,我的所有其他 innerHTML 对象都会停止出现。此外,表格本身也不会出现。

当我在 HTML 中呈现表单时,它们可以正常工作,只有当我尝试在 Javascript 中呈现它们时才会出现问题。

有没有人可以解决这个问题?

这是我的代码:

查看:

<div class="search-tabs-new animated fadeInUp">
<!-- Create select box for user to choose search method (by Person, Phone or Address) -->
<div class="home-search-custom-select">
  <ul class="home-search-method-options-list">
    <li id="home-search-by-btn">Search By...</li>
    <li class="home-search-method-option"></li>
    <li class="home-search-method-option"></li>
    <li class="home-search-method-option"></li>
  </ul>
</div>

<div id="home-search-form-area">
</div>

Javascript:

let methodTypes = [
  'Phone Number',
  'Name',
  'Address'
];

let homeSearchForms = [

  '<?= $this->render('/site/forms/phone_search', ['uri' => Url::to(['phone/process'])]); ?>',
  '<?= $this->render('/site/forms/person_search', ['uri' => Url::to(['people/process'])]); ?>',
  '<?= $this->render('/site/forms/address_search', ['uri' => Url::to(['address/process'])]); ?>'

];

let searchMethodOptions = document.querySelectorAll('.home-search-method-option');
searchMethodOptions = Array.from(searchMethodOptions);

function setSearchMethod() {
  for (var i = 0; i < searchMethodOptions.length; i++) {
    const searchMethodOption = searchMethodOptions[i];
    const methodType = methodTypes[i];
    const searchForm = homeSearchForms[i];

    searchMethodOption.innerHTML = methodType;

    searchMethodOption.addEventListener("click", function() {
        document.getElementById('home-search-form-area').innerHTML = searchForm;
    });

  }
}

setSearchMethod();

【问题讨论】:

  • 查看浏览器控制台是否有js错误,并更具体的问题
  • 您在 javascript 中使用的 html/表单在哪里,也添加该 html,因为这样很难猜到,控制台上是否有任何错误
  • 你需要在你的视图中显示你是如何使用上面的javascript sn-p的,如果你使用heredoc来包含上面的javascript它可能无法正常工作,请添加你的视图代码。
  • 刚刚添加到 HTML 中 - 到目前为止,我没有看到任何控制台 js 错误,我尝试添加一个警报,其中正在调用 searchForm 变量以及一些标准 HTML,它们都运行良好。问题似乎只发生在我自己调用表单时

标签: javascript php yii yii2


【解决方案1】:

如果您呈现的 HTML 中有换行符,您应该删除这些换行符

let homeSearchForms = [

  '<?= preg_replace( "/\r|\n/", "", $this->render('/site/forms/phone_search', ['uri' => Url::to(['phone/process'])])); ?>',
   ...

];

并确保在呈现的 HTML 中没有任何单引号

【讨论】:

  • 解决了问题!!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 2023-03-15
  • 2020-02-05
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 2013-03-12
相关资源
最近更新 更多