MVC下拉列表级联-如何在第一个ddl选择更改时在第三个ddl上触发事件
MVC Dropdownlist Cascade - how to fire event on third ddl when first ddl selection changes?
一个视图中有三个DDL。我在第一个DDL的"onchange"上触发一个javascript函数来填充第二个DDL,第二个DDL来填充第三个DDL。没问题。
问题是,当第一个DDL被设置为未选择时,即"Select a Value"时,第二个DDL被触发并将自身设置为"Select a Value",但第二个DDL 'onchange'事件没有触发,因此第三个DDL仍然填充着从前一个选择中获得的数据。
如何让第二个DDL触发一个事件,我可以用它来刷新第三个DDL?还是有别的办法?
下面的代码:@{
ViewBag.Title = "CascadingList";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@{Html.EnableUnobtrusiveJavaScript(true);}
<script type="text/javascript">
$(document).ready(function () {
getMarket();
});
function getMarket() {
var url = '@Url.Content("~/Strategies/MarketList")/';
$.getJSON(url, function (data) {
var items = "<option>Select a Market</option>";
$.each(data, function (i, market) {
if (market.Value.indexOf("''") > -1) {
s = market.Value + " " + market.Text;
alert(s + ": Market.Value cannot contain ''")
}
items += "<option value='" + market.Value + "'>" + market.Text + " </option>";
});
$('#MarketsID').html(items);
});
}
function getShareType() {
var url = '@Url.Content("~/Strategies/ShareTypeList")/' + $('#MarketsID').val();
$.getJSON(url, function (data) {
var items = '<option>Select an Asset Type</option>';
$.each(data, function (i, shareType) {
items += "<option value='" + shareType.Value + "'>" + shareType.Text + " </option>";
});
$('#ShareTypesID').html(items);
});
}
function getShare() {
var url = '@Url.Content("~/Strategies/ShareList")/' + $('#MarketsID').val() + '|' + $('#ShareTypesID').val();
$.getJSON(url, function (data) {
var items = '<option>Select a Share</option>';
$.each(data, function (i, share) {
items += "<option value='" + share.Value + "'>" + share.Text + "</option>";
});
$('#SharesID').html(items);
});
}
</script>
<h2>Strategy</h2>
<div id="MarketsDivID">
<label for="Markets">Markets</label>
<select id="MarketsID" name="Markets" onchange="getShareType()"></select>
</div>
<div id="ShareTypesDivID">
<label for="ShareTypes">ShareTypes</label>
<select id="ShareTypesID" name="ShareTypes" onchange="getShare()" ></select>
</div>
<div id="SharesDivID">
<label for="Shares">Shares</label>
<select id="SharesID" name="Shares" ></select>
</div>
尝试使用$('#selectID').val()
填充select
后选择一个值,如果不工作触发onchange
这样;$('#selectID').trigger('change')
谢谢——我试过了,但绕了一圈——但它让我有了不同的想法。通过在填充第二个DDL的函数中添加对填充第三个DDL的函数的调用来修复它——这样它总是被调用。
function getShareType() {
var url = '@Url.Content("~/Strategies/ShareTypeList")/' + $('#MarketsID').val();
$.getJSON(url, function (data) {
var items = '<option>Select an Asset Type</option>';
$.each(data, function (i, shareType) {
items += "<option value='" + shareType.Value + "'>" + shareType.Text + "</option>";
});
$('#ShareTypesID').html(items);
});
**** Added This ****
getShare();
}
相关文章:
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 如何使用PHP和JS级联三个下拉列表
- 灯光问题(使用三个.js)
- 在三个.js中创建球体(例如地球)的磁力线
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- javascript第三个XMLHttpRequest被拒绝.但前两个是允许的
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- 根据前两个下拉ID显示第三个下拉列表
- 在数组JS中查找三个重复项
- Meteor和S3:如何通过一次上传/编辑定义三个不同的图像
- 如何替换javascript字符串中的前三个连字符
- 保存两个模型(属于第三个模型)和一个提交
- 将文本字段限制为三个数字
- 三个js键盘旋转
- 匹配三个正则表达式中的任意一个,以先到的为准(在javascript中)
- 加载模型与三个.js
- 连续三个检查宾果游戏
- 我需要帮助查找我的JavaScript小游戏中的错误(三个我没有得到的错误)
- 如何在导入的 Collada 模型上使用 EdgesHelper 在三个.js.
- MVC下拉列表级联-如何在第一个ddl选择更改时在第三个ddl上触发事件