复选框触发更改事件

时间:2017-12-12 08:31:36

标签: javascript jquery html

我正在验证某些数据,然后我动态检查复选框,我想触发复选框的更改事件。

$("#chk").prop("checked", true).trigger("change");

更改活动

$("#chk").change(function () {
            if ($(this).is(':checked')) {
                if (localStorage.getItem('A') == undefined && sessionStorage.getItem('A') == null) {
                    location.href = "/" + lang.split('-')[0] + "/login.aspx";
                }
                $("#dvClass").hide();
                $("#dvPromoCode").hide();
                $("#resultby").empty();
                $("#resultby").append('<option selected value="Flex">' + Res.flexidates + '</option>');
            }
            else {
                $("#dvClass").show();
                $("#dvPromoCode").show();
                $("#resultby").empty();
                $("#resultby").append('<option value="AirAvailability">' + Res.schedule + '</option>');
                $("#resultby").append('<option selected value="Flex">' + Res.flexidates + '</option>');
            }
        });

但它没有触发更改事件。但是,如果我从控制台执行而不是按预期工作。我想知道什么是问题。

2 个答案:

答案 0 :(得分:1)

在你改变ins之前,你是否宣布改变事件;看到更新的答案:

&#13;
&#13;
$(function(){
  $("#chk").on("change", function() {
    console.log(this.checked)
  });
  
  
  $("#chk").prop("checked", true).trigger("change");
  

  
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="chk" type="checkbox" />
&#13;
&#13;
&#13;

答案 1 :(得分:1)

这里的功能顺序很重要。

您在设置复选框值之前已经放置了更改事件。请看下面的代码。

 $("#chk").change(function() {
    alert("triggered!"); 
 });

 $("#chk").prop("checked", "checked").trigger("change");

以上操作无效,因为当jquery为第一行运行时,它没有任何复选框的更改事件。您可以在此Fiddle

中查看相同的内容

现在在调用之前放置你的变更事件函数,如下所示。

on

现在您可以获得预期的结果。您可以在此Fiddle

中查看相同的内容

最好将$("#chk").on('change', function() { alert("triggered!"); }); 事件用于动态添加的元素,如下所示。

string filePath = "~/Templates/Work/Template.docx";
using (MemoryStream stream = new MemoryStream())
{
    SaveToStream(stream, FileFormat.Docx);
    Document finalDoc = new Document();
    finalDoc.LoadFromStream(stream, FileFormat.Docx);
    stream.SetLength(0); 
    finalDoc.UpdateTableOfContents();
    finalDoc.SaveToStream(stream, FileFormat.Docx);
    return stream.ToArray();
}