MVC-在jquery填充后选择正确的下拉选项
我正在创建一个编辑视图,该视图将根据编辑操作更改其内容和表单元素。我传递一个模型,将一个值存储在一个隐藏元素中,然后,一旦文档准备好,我就使用ajax填充一个下拉列表。紧接着,我需要选择与隐藏元素中的值相等的正确选项。 我的代码不起作用,我两天来一直在试图找出原因 剃刀 阿贾克斯 调用成功,在changedlSelection中,变量publ的值是正确的,但是如果我在Chrome控制台中执行代码,下拉列表不会改变它的选项,而是会改变它。 然而,change会触发,所以storeNewPublisher会被触发,但每个局部变量都是未定义的 我的邻居们都在抱怨,我再也不能把头撞在墙上了MVC-在jquery填充后选择正确的下拉选项,jquery,ajax,asp.net-mvc,razor,Jquery,Ajax,Asp.net Mvc,Razor,我正在创建一个编辑视图,该视图将根据编辑操作更改其内容和表单元素。我传递一个模型,将一个值存储在一个隐藏元素中,然后,一旦文档准备好,我就使用ajax填充一个下拉列表。紧接着,我需要选择与隐藏元素中的值相等的正确选项。 我的代码不起作用,我两天来一直在试图找出原因 剃刀 阿贾克斯 调用成功,在changedlSelection中,变量publ的值是正确的,但是如果我在Chrome控制台中执行代码,下拉列表不会改变它的选项,而是会改变它。 然而,change会触发,所以storeNewPublis
非常感谢您在当前的实现中,在LoadPublisher之后调用changeDDLSelection方法。但这并不意味着第二个方法总是在changedlSelection方法完成它必须完成的所有工作之后执行。如果在每个方法中放置一个console.log,您将看到这一点 您应该做的是,在添加结果数组中的所有选项后,在ajax调用LoadPublisher方法的成功事件中调用changedlSelection方法
function loadPublishers() {
$.ajax({
type: "GET",
url: "/Filter/GetPublishers/",
contentType: 'application/json',
data: { productType : $("#ddl_filterProdType option:selected").val() },
success: function (data) {
$.each(data, function (i, pub) {
$("#ddl_publisher").append('<option value="' + pub.Text +
'"> [ ' + pub.Value + ' ] - ' + pub.Text + '</option>');
});
//Safely call the second method here
changeDDLSelection();
},
error: displayPublishFailureMessage
});
}
function changeDDLSelection() {
var publ = $("#hid_publisher").val();
$("#ddl_publisher").val(publ).change();
}
$(document).ready(function(){
loadPublishers();
}
不幸的是,我把它放在了第一位,但我得到了同样的结果,我想,也许出于某种原因,它没有在代码的成功部分触发。它与Nadeem建议的分离调用一起工作。我以为电话是顺序的,不是平行的!非常感谢!好的,这实际上和Shyju的答案一起起作用了!非常感谢。我想知道为什么连电话都挂不上
$(document).ready(function(){
loadPublishers();
changeDDLSelection();
}
function changeDDLSelection() {
publ = $("#hid_publisher").val();
$("#ddl_publisher").val(publ).change();
}
function storeNewPublisher() {
var publisherText = $("#ddl_publisher option:selected").text();
var publisherValue = $("#ddl_publisher option:selected").val();
var publisherStatus = publisherText.replace(publisherValue, '').replace('-', '').replace('[', '').replace(']', '').trim();
$("#hid_publisher").val(publisherValue);
$("#hid_publisherStatus").val(publisherStatus);
}
function loadPublishers() {
$.ajax({
type: "GET",
url: "/Filter/GetPublishers/",
contentType: 'application/json',
data: { productType : $("#ddl_filterProdType option:selected").val() },
success: function (data) {
$.each(data, function (i, pub) {
$("#ddl_publisher").append('<option value="' + pub.Text + '"> [ ' + pub.Value + ' ] - ' + pub.Text + '</option>');
});
},
error: displayPublishFailureMessage
});
}
function loadPublishers() {
$.ajax({
type: "GET",
url: "/Filter/GetPublishers/",
contentType: 'application/json',
data: { productType : $("#ddl_filterProdType option:selected").val() },
success: function (data) {
$.each(data, function (i, pub) {
$("#ddl_publisher").append('<option value="' + pub.Text +
'"> [ ' + pub.Value + ' ] - ' + pub.Text + '</option>');
});
//Safely call the second method here
changeDDLSelection();
},
error: displayPublishFailureMessage
});
}
function changeDDLSelection() {
var publ = $("#hid_publisher").val();
$("#ddl_publisher").val(publ).change();
}
$(document).ready(function(){
loadPublishers();
}