我从下拉列表中选择了一个表格。如果表中任何项目的状态不是“成功”,我想禁用页面上的按钮,否则我启用它。我有一个带有以下内容的更改事件处理程序:
function enableButton() {
$(".myButton").attr("disabled", true);
$("td.tdStatus").each(function() {
if ($(this).text() == "SUCCESS") {
$("input.myButton").attr("disabled", false);
return false;
}
});
}
$(function() {
$("#myList").change(enableButton);
});
在下拉列表的第一个项目选择中,我进入事件处理程序,但$("td.tdStatus").each(function()
没有找到任何内容。当我随后对下拉列表进行更改时,按钮会按照我的预期获得enabled
/ disabled
。任何想法为什么第一次改变不起作用?
HTML如下:
<ItemTemplate>
<tr>
<td runat="server" id="tdName"><%# Eval("Name") %></td>
<td class="tdStatus"><%# Eval("Status") %></td>
</tr>
</ItemTemplate>
由于
答案 0 :(得分:1)
使用此:
function enableButton() {
$(".myButton").attr("disabled", true);
var x = $("td").find(".tdStatus", function() {
if ($(this).text() == "SUCCESS") {
$(".myButton").removeAttr("disabled");
return false;
}
});
}
$(function() {
$("#myList").change(enableButton);
});
我认为应该有效
尝试使用.text()和.val()我不确定哪一个应该工作
答案 1 :(得分:1)
您需要完全删除已禁用的属性。
$(".myButton").removeAttr("disabled");
禁用属性的存在,无论该值将导致控件被禁用,即
<强>禁用强>
<input type="button" disabled="true" />
仍然停用
<input type="button" disabled="false" />
<强>已启用强>
<input type="button" />
答案 2 :(得分:1)
还有一些建议:
您是否尝试过使用.tdStatus代替td.tdStatus?
如果你的框架为你的条目创建div,你可能需要调用td的孩子吗?
function enableButton() {
$(".myButton").attr("disabled", true);
$("td.tdStatus").children().each(function() {
if ($(this).text() == "SUCCESS") {
$("input.myButton").attr("disabled", false);
return false;
}
});
}
尝试在每个方法中使用alert()来查看返回的内容
function enableButton() {
$(".myButton").attr("disabled", true);
$("td.tdStatus").children().each(function() {
alert(jQuery(this).text());
});
}
答案 3 :(得分:0)
只是为了给出更新,加载数据的选项卡有一个绑定到tabsload事件的函数:
$(“#tabContent”)。bind('tabsload',tabLoaded);
在tabLoaded内部我调用了enableButton()函数,这使得它运行正常,在函数触发之前数据已完全加载。感谢大家的帮助,对错过原帖中的关键信息表示歉意!