将动态下拉菜单重置回初始状态
Reset a dynamic dropdown back to initial state
我有一个ajax动态下拉表单,onchange根据第一个选择更改第二个下拉表单。但是,如果有人要重置表单,则清除除动态元素外的所有元素。
我做了一个复位按钮功能,做:$('#myForm')[0].reset();
但是它不会重置动态下拉菜单
然后我添加$('#state').prop('selectedIndex',0);
,它只会选择初始子项。
本质上,我想让它回到默认的<option value="">State/Province</option>
状态,在成为动态之前,我不知道如何准确地做到这一点。
我是非常非常新的,使用以前的问题和谷歌甚至让我走到这一步。
感谢:这是我需要重置的:
<select name="state" class="dropdown" id="state">
<option value="">State/Province</option>
<!-- this is populated by ajax -->
</select>
这个形式改变了上面的:
<select name="country" class="dropdown" id="country" onchange="getStates();">
<option value="">Select Country</option>
<?php
$con = mysql_connect($db_host, $db_user, $db_pass);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db('earth');
$query = "select id,country from regions order by country";
$result = mysql_query($query);
while ( $row = mysql_fetch_object( $result ) )
{
?>
<option value=<?php echo $row->id; ?>><?php echo $row->country;?> </option>
<?php }
mysql_free_result($result);
?>
</select>
额外代码:
function getStates()
{
$('#state').html('');
var e = document.getElementById("country");
var countryID = e.options[e.selectedIndex].value;
$.ajax({
type: "POST",
url: "getStates.php",
data: {countryID:countryID},
dataType:'json',
//success: function(result){
success: function(data){
var toAppend = '';
$.each(data,function(i,o){
toAppend += '<option value=' +o.id + '>' + o.name + '</option>';
});
$('#state').append(toAppend);
},
});
}
function reset_select_box(selector, default_value)
{
if(typeof default_value !== 'string') default_value = "";
var select_box = $(document).find(selector),
children = select_box.children();
console.log(children);
for(var i in children){
if(children[i].value === ""){
select_box.prop('selectedIndex', i);
}
}
};
function resetForm()
{
// since the form is dynamic, reset form does not reset the states
$('#frmSigGen')[0].reset();
}
这似乎能奏效:
function resetForm()
{
$('#frmSigGen')[0].reset();
$('#state').empty();
$('#state').append('<option value="">State/Province</option');
}
也许尝试遍历select元素的子元素寻找默认值?
var reset_select_box = function(selector, default_value){
if(typeof default_value !== 'string') default_value = "";
var
select_box = $(document).find(selector),
children = select_box.children();
console.log(children);
for(var i in children){
if(children[i].value === ""){
select_box.prop('selectedIndex', i);
}
}
};
<html>
<head>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
</head>
<body>
<select id="test">
<option value="">Default</option>
<option value="1">option 1</option>
<option value="2">option 2</option>
<option value="3">option 3</option>
<option value="4">option 4</option>
<option value="5">option 5</option>
</select>
<button type="button" onclick="reset_select_box('#test');">Reset</button>
</body>
</html>
您可以添加一个特定的数据标记来标记最新的选项,即data-toreset
。然后,当需要重置时,只删除带有该标记的选项。
最新选项:
<option data-toreset="1"></option>
JQuery脚本可以像这样:
$('*[data-toreset="1"]').remove();
然后你可以选择你的组合的第一个元素
相关文章:
- 在Redux中链接async和sync操作以计算初始状态
- 无法使用国家/地区选择中的状态动态填充下拉列表
- React + Flux:将初始状态引入存储
- 你能,或者应该在Redux'中使用localStorage吗;s的初始状态
- javascript关闭以记住初始状态
- 在两个或多个 UL 列表之间切换,如果单击一个列表,则其他列表会自动以初始状态返回,就像从未单击过一样
- ReactJs:如何在渲染组件时传递初始状态
- 如何将 redux 状态返回到初始状态
- 停止无限CSS3动画并平滑恢复到初始状态
- 将高图重置为初始状态
- 如何将 DOM 状态重置为初始状态(首次接收页面时?
- 高图表 将向下钻取(三层)重置为初始状态
- 是否可以在单击时将类(特别是其动画)重置回其初始状态
- ReactJS中初始状态的未定义值
- 如何基于Rx.ReplaySubject模型在React中设置初始状态
- javascript/jquery stop按钮将播放按钮更改为初始状态而不是暂停
- 要在其中设置动画的元素的初始状态
- 使用angularjs,我如何根据同一表单中另一个输入标签的状态动态地将输入标签添加到表单中
- 使用javascript将一个字符动态替换为另一个字符,而不将页面返回到初始状态
- 将动态下拉菜单重置回初始状态