解绑后无法绑定
Cannot bind after unbinding
我试图在之前取消绑定后绑定一个点击事件,但我无法让它工作。
这是我的 HTML:
<div class="input-group date">
<input type="text" class="form-control" id="dp1" style="width: 100px; vertical-align: middle" />
<span class="input-group-addon" id="dp1Icon" style="outline-style:none"><img src="<%=context%>/images/calendar-glyph.png"></span>
</div>
输入实际上是一个bootstrap日期选择器组件。该跨度包含一个 bootstrap 字形,可触发日期选择器打开。我有一个单选按钮组,可以像这样切换禁用这些按钮:
$(".date-wrap input[type='radio']").on("click", function(e){
if ($(e.target).val() == "permanent"){
$("#dp1, #dp1Icon").prop("disabled", true);
$("#dp1Icon").unbind("click"); // Disabled attribute only works on form controls, not spans. So we have to unbind the event
$("#dp1").removeAttr("readonly", "readonly");
}else{
$("#dp1, #dp1Icon, #e3").prop("disabled", false);
$("#dp1Icon").bind("click");
$("#dp1").removeAttr("readonly");
}
});
因此,如果他们单击的单选按钮的值为 "permanent",则一切都将被禁用;效果很好。否则,我会尝试重新打开它们。
我唯一能想到的是,当我再次尝试将点击事件绑定到glyphicon时,我必须定义打开日期选择器的实际处理程序;像这样:
$("#dp1Icon").bind("click", $("#dp1").datepicker('show'));
但我所做的只是在我单击另一个单选按钮后立即打开日期选择器。我希望它仅在他们单击时打开。
我在这里错过了什么重要的部分?有人有想法吗?
感谢您提供任何提示。
bind("click")
不会神奇地重新添加事件。您需要将其添加回事件。
$("#dp1Icon").on("click", function(){ $("#dp1").datepicker('show'); } );
您最好只在该函数内设置一个标志而不删除该事件。
我试图在之前取消绑定后绑定一个点击事件,但我无法让它工作。
这是我的 HTML:
<div class="input-group date">
<input type="text" class="form-control" id="dp1" style="width: 100px; vertical-align: middle" />
<span class="input-group-addon" id="dp1Icon" style="outline-style:none"><img src="<%=context%>/images/calendar-glyph.png"></span>
</div>
输入实际上是一个bootstrap日期选择器组件。该跨度包含一个 bootstrap 字形,可触发日期选择器打开。我有一个单选按钮组,可以像这样切换禁用这些按钮:
$(".date-wrap input[type='radio']").on("click", function(e){
if ($(e.target).val() == "permanent"){
$("#dp1, #dp1Icon").prop("disabled", true);
$("#dp1Icon").unbind("click"); // Disabled attribute only works on form controls, not spans. So we have to unbind the event
$("#dp1").removeAttr("readonly", "readonly");
}else{
$("#dp1, #dp1Icon, #e3").prop("disabled", false);
$("#dp1Icon").bind("click");
$("#dp1").removeAttr("readonly");
}
});
因此,如果他们单击的单选按钮的值为 "permanent",则一切都将被禁用;效果很好。否则,我会尝试重新打开它们。
我唯一能想到的是,当我再次尝试将点击事件绑定到glyphicon时,我必须定义打开日期选择器的实际处理程序;像这样:
$("#dp1Icon").bind("click", $("#dp1").datepicker('show'));
但我所做的只是在我单击另一个单选按钮后立即打开日期选择器。我希望它仅在他们单击时打开。 我在这里错过了什么重要的部分?有人有想法吗?
感谢您提供任何提示。
bind("click")
不会神奇地重新添加事件。您需要将其添加回事件。
$("#dp1Icon").on("click", function(){ $("#dp1").datepicker('show'); } );
您最好只在该函数内设置一个标志而不删除该事件。