使用onchange事件通过Javascript生成的列表的HTML表单 - 未按预期工作
HTML form with lists generated thru Javascript using onchange event - not working as expected
我有一个带有#List1
、#Text1
和#List2
的HTML表单。 #List1
是通过 PHP 从 MySQL 通过 JSON 生成的。 #Text1
对用户输入的更改。 每次用户更改#Text1
时,也应该通过MySQL的JSON生成#List2
,同时使用#List1
中选择的值和#Text1
的内容。
表单中的数据在 PHP 中进一步用于通过对 MySQL 的查询生成包含数据的表。
我尝试使用 onchange()
事件生成#List2
,但它不起作用 - #List2
在用户输入 #Text1
后仍为空,尽管执行了 onchange()
函数。
.HTML
<div class="input_frm">
<form method="post" action="<?php print data_clean($_SERVER["PHP_SELF"]);?>">
<table class="input_tbl">
<tr>
<td class="a">Select county</td>
<td class="b"><select id="selJudet" name="Alfa" onchange="judetChg()"></select></td>
<td class="c"><input class="button_face" type="submit" value="Submit"></td>
</tr>
<tr>
<td class="a">Search zone as</td>
<td class="b"><input type="text" id="selText" name="Beta" maxlength="35" placeholder="Wildcard string" onchange="textChg()" /></td>
<td class="c"></td>
</tr>
<tr>
<td class="a">Select zone</td>
<td class="b"><select id="selZona" name="Gamma" onchange="zonaChg()"></select></td>
<td class="c"></td>
</tr>
</table>
</form>
</div>
JavaScript
$(document).ready(function()
{
$.getJSON("/scripts/033A_GetJudet.php", success = function(data)
{
var str_options = "";
for (var i=0; i < data.length; i++)
{
str_options += "<option value='" + data[i] + "'>" + data[i] + "</option>";
}
$("#selJudet").append(str_options);
var selOption = document.getElementById("selJudet");
selOption.selectedIndex = localStorage.getItem("selJudIndex") || 0;
document.getElementById("selJudet").selectedIndex = selOption.selectedIndex;
});
});
function judetChg()
{
var selOption = document.getElementById("selJudet");
localStorage.setItem("selJudIndex", selOption.selectedIndex);
}
function textChg()
{
var selTextValue = document.getElementById("selText").value;
localStorage.setItem("selTextValue", selTextValue);
var selJudet = localStorage.getItem("selJudIndex");
//alert(selJudet);
var str_http = "/scripts/033B_GetJudetWildcdZona.php?judet=" + selJudet + "&textwildcd=" + selTextValue;
//alert(str_http);
$.getJSON(str_http, success = function(data)
{
var str_options = "";
for (var i=0; i < data.length; i++)
{
str_options += "<option value='" + data[i] + "'>" + data[i] + "</option>";
}
$("#selZona").html("");
$("#selZona").append(str_options);
});
}
function zonaChg()
{
var selOption = document.getElementById("selZona");
localStorage.setItem("selZonaIndex", selOption.selectedIndex);
}
它
有效!考虑到它是基于事件的,现在它似乎很自然。(就像在Visual Studio中一样 - 只是更难调试:))。代码可能会改进为在#List1.change
时触发 - 或不触发,具体取决于表单的逻辑。
我的PHP代码中有一个错误,一个$row['...']
变量,它有一个我没有注意到的错误索引,错误正是因为我从另一个脚本复制了代码以免出错!
相关文章:
- 如何防止回车键提交表单,但仍然允许回车工作
- JavaScript表单验证-“;“错误”;不按需要工作
- 谷歌表单-根据分配给谷歌应用程序的工作为商业用户预先填充多项选择列表
- 当阻止Enter键提交AJAX表单时,关注下一个输入是't工作
- jQuery preventdefault提交表单没有'通过js函数提交表单时无法工作
- 使用一个Javascript函数提交多个表单可以在FF中工作,而不需要其他浏览器
- Ajax表单数据phpPOST不工作
- 表单验证工作不正常,在不检查条目的情况下继续
- JavaScript表单返回,但无法正常工作
- 如何使setTimeout脚本在html表单中正常工作
- 表单验证在接近尾声时停止工作
- 为什么不是'当试图使用Ajax和外部PHP文件发布内容时,我的表单工作不正常,该文件接收两个字符串
- html5表单工作不正常
- .单击“不为动态加载的表单工作”
- 提交表单工作不正常
- 使jquery函数跨多个表单工作.(将Jquery设为DRY)
- 不能让JS表单工作
- HTML表单工作不正常
- 在禁用javascript的情况下使注册表单工作
- 我如何在谷歌表单脚本编辑器中设置var主题,以返回表单/工作表中指定字段的值