【发布时间】: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