Javascript 设置<;输入>;通过jquery(selector).prop()函数检查不适用于动态html
我有一个页面,它位于Javascript 设置<;输入>;通过jquery(selector).prop()函数检查不适用于动态html,javascript,c#,jquery,html,ajax,Javascript,C#,Jquery,Html,Ajax,我有一个页面,它位于$(document).ready,调用一个javascript函数,该函数通过对服务器的ajax调用,根据页面请求的上下文动态创建一些输入控件 我需要将一个动态创建的控件(输入复选框)设置为默认选中 我试着通过$(#id).prop('checked',true)设置它在调用服务器后,但它不工作。我猜这个领域还不存在 如何修改从ajax调用动态创建的html控件 在HTML中设置checked,而不是使用prop进行初始检查 这可以是静态的,也可以是动态的。只需将选中的添
$(document).ready
,调用一个javascript函数,该函数通过对服务器的ajax调用,根据页面请求的上下文动态创建一些输入控件
我需要将一个动态创建的控件(输入复选框)设置为默认选中
我试着通过$(#id).prop('checked',true)设置它代码>在调用服务器后,但它不工作。我猜这个领域还不存在
如何修改从ajax调用动态创建的html控件 在HTML中设置checked
,而不是使用prop
进行初始检查
这可以是静态的,也可以是动态的。只需将选中的添加到动态生成中即可。然后,您需要引入prop
,以满足您的需要。在HTML中设置checked
,而不是使用prop
进行初始检查
这可以是静态的,也可以是动态的。只需将选中的添加到动态生成中即可。然后,您可以使用prop
来满足您的需要。您可以使用attr
和removeAttr
方法来选中/取消选中复选框/无线电输入
// to check a checkbox or radio button
$(selector).attr("checked","checked");
// to uncheck a checkbox (radio button will be cleared on another check)
$(selector).removeAttr("checked");
如果您是从AJAX创建输入,则可以在更新DOM后将其放在AJAXsuccess
或complete
函数上。但是@Aaron是对的,在服务器端设置生成值更有效。您可以使用attr
和removeAttr
方法选中/取消选中复选框/无线电输入
// to check a checkbox or radio button
$(selector).attr("checked","checked");
// to uncheck a checkbox (radio button will be cleared on another check)
$(selector).removeAttr("checked");
如果您是从AJAX创建输入,则可以在更新DOM后将其放在AJAXsuccess
或complete
函数上。但是@Aaron是对的,在服务器端设置生成值更有效。提供的答案很好,可以解决问题,但不能解决我的问题。这是因为生成这些html元素的javascript是一个抽象文件,它为许多不同的应用程序生成html输入控件。我无法修改该文件以专门选中某个案例的复选框
我所做的是,在这个通用javascript文件中,调用一个setDefaults()
方法(如果它存在于当前上下文中)。因此,该脚本的调用者可以选择实现一个setDefaults(),在生成html之后,该脚本将被通用脚本调用
function initReport(reportID) {
//request the data needed to create the dynamic html from the server:
$.ajax({
type: "GET",
url: "/report.aspx/GetReportDetails?reportID=" + reportID,
contentType: "application/json; charset=utf-8",
dataType: "json"
}).done(function (result) {
reportFormData = JSON.parse(result.d);
//request our generic html template:
$.ajax({
type: "GET",
url: "/assets/modules/report/Templates/Form.html"
}).done(function (result) {
$("#Form").html(result);
//generate html from server data:
buildViewModel(reportFormData);
buildPage(reportFormData);
kendo.bind($("#Form"), viewModel);
//call "setDefaults" function only if it has been defined (in the current report template)
if (typeof setDefaults === "function")
{
setDefaults();
}
});
}).fail(function (jqXHR, textStatus, err) {
console.log("An error has occurred: " + err);
});
...
}
提供的答案很好,可以解决问题,但不能解决我的问题。这是因为生成这些html元素的javascript是一个抽象文件,它为许多不同的应用程序生成html输入控件。我无法修改该文件以专门选中某个案例的复选框
我所做的是,在这个通用javascript文件中,调用一个setDefaults()
方法(如果它存在于当前上下文中)。因此,该脚本的调用者可以选择实现一个setDefaults(),在生成html之后,该脚本将被通用脚本调用
function initReport(reportID) {
//request the data needed to create the dynamic html from the server:
$.ajax({
type: "GET",
url: "/report.aspx/GetReportDetails?reportID=" + reportID,
contentType: "application/json; charset=utf-8",
dataType: "json"
}).done(function (result) {
reportFormData = JSON.parse(result.d);
//request our generic html template:
$.ajax({
type: "GET",
url: "/assets/modules/report/Templates/Form.html"
}).done(function (result) {
$("#Form").html(result);
//generate html from server data:
buildViewModel(reportFormData);
buildPage(reportFormData);
kendo.bind($("#Form"), viewModel);
//call "setDefaults" function only if it has been defined (in the current report template)
if (typeof setDefaults === "function")
{
setDefaults();
}
});
}).fail(function (jqXHR, textStatus, err) {
console.log("An error has occurred: " + err);
});
...
}
您必须根据Ajax的complete方法中的响应进行任何更改您是否尝试过将html字符串包装在jquery对象中并在将其插入DOM之前选中复选框?您必须根据Ajax的complete方法中的响应进行任何更改您是否尝试过将html字符串包装在jquery对象中并选中在将HTML插入DOM之前选中复选框?我想到了这个解决方案,但不幸的是,HTML生成是在一个单独的库中抽象的,我不能为这个单独的库修改它case@JamesWierzba即使它来自一个库,您仍然可以在加载元素后访问它,然后在那里更改您的设置。这个解决方案出现在脑海中,但不幸的是HTML生成被抽象在一个单独的库中,我无法为这个单独的库进行修改case@JamesWierzba即使它来自一个库,您仍然可以在加载元素后访问它,然后在那里更改设置。不建议使用prop
而不是attr
?Taha Alexander是正确的,prop
优于attr
,因为prop与实际的DOM元素一起工作。我不知道这一点,很高兴知道。现在阅读:是否建议使用prop
而不是attr
?Taha Alexander是正确的,prop
比attr
更受欢迎,因为prop与实际的DOM元素一起工作。我不知道,很高兴知道。现在读到:@JamesWizerzba,我还是不明白。在一天结束时,表单和输入会出现在DOM中。我很难解释,但本质上,我们有一个通用“报告”的每个实现的javascript文件。正是在这个文件中,我必须放置DOM操作,因为它只特定于该报表实例。但是,在执行报表实例脚本时尚未生成表单输入。因此,需要从通用报告脚本回调实例脚本(仅当该函数存在时,以免中断没有setDefaults
函数的其他实例)。如果是这种情况,为什么要尝试$(#id).prop('checked',true)代码>?@Aaron我不明白这个问题。这就是我想要做的,将复选框的属性更改为true。在我选择该复选框时,该复选框在DOM中不存在。因此,我的解决方案是定义一个函数,选中复选框,然后在将复选框添加到DOM后在通用脚本中调用该函数。这确实令人困惑,但这是我们应用程序中深深嵌入的框架,这是我能看到的唯一解决方法。然后在通用脚本中调用函数
您可以将其设置为选中