单击不触发JQuery/Javascript

单击不触发JQuery/Javascript,javascript,jquery,Javascript,Jquery,有人能解释一下为什么我的javascript不工作吗。我正在尝试在我的站点上设置隐藏字段的值。脚本已经工作了,但出于某些原因,它不再工作了。 下面是javascript <script> $('#checkDk').on('change', function () { $('#MainContent_hiddenTargetDk').val($(this).prop("checked") ? $(this).val() : ""); conso

有人能解释一下为什么我的javascript不工作吗。我正在尝试在我的站点上设置隐藏字段的值。脚本已经工作了,但出于某些原因,它不再工作了。
下面是javascript

<script>
    $('#checkDk').on('change', function () {
        $('#MainContent_hiddenTargetDk').val($(this).prop("checked") ? $(this).val() : "");
        console.log($("#MainContent_hiddenTargetDk").val());
    });
</script>

$('#checkDk')。on('change',function(){
$('#MainContent_hiddenTargetDk').val($(this.prop(“checked”)?$(this.val():);
log($(“#MainContent_hiddenTargetDk”).val());
});
这是按钮

<label runat="server" id="dk" class="btn btn-default">
    <input runat="server" id="checkDk" type="checkbox" value="208" onselect="getvalue()" autocomplete="off">
    Denmark
</label>

丹麦
这是希登菲尔德:

<input type="hidden" id="hiddenTargetDk" runat="server" />

您正在绑定到一个
已更改的
事件,并在
单击中等待它。我确实认为这不是应该的工作方式

请尝试以下方法:

 $('#checkDk').on('click', function () {
    $('#MainContent_hiddenTargetDk').val($(this).prop("checked") ? $(this).val() : "");
    console.log($("#MainContent_hiddenTargetDk").val());
});
$(#hiddenTargetDk)
$(#main content_hiddenTargetDk)


无标题文件
丹麦
$('#checkDk')。on('change',function(){
$('#hiddenTargetDk').val($(this.prop(“选中”)?$(this.val():“”);
console.log($(“#hiddenTargetDk”).val();
});

您必须使用其
id
将值设置为
输入
隐藏,该id为
#hiddenTargetDk
#MainContent\u hiddenTargetDk

jQuery:

$('#checkDk').on('change', function () {

        $('#hiddenTargetDk').val($(this).prop("checked") ? $(this).val() : "");
        console.log($("#hiddenTargetDk").val());
    });

您的问题是其他答案的组合,以及ASP.NET的一个秘密后端怪癖

ASP.NET正在更改隐藏字段的ID。您需要将ClientIDMode=“Static”属性添加到要使用JQuery的字段中,如下所示:

<label runat="server" id="dk" class="btn btn-default">
    <input runat="server" id="checkDk" type="checkbox" value="208" onselect="getvalue()" autocomplete="off" clientidmode="static">
    Denmark
</label>

<input type="hidden" id="hiddenTargetDk" runat="server" clientidmode="static" />

我想我会这样编写JQuery:

<script>
    $('#checkDk').click(function () {
        $('#hiddenTargetDk').val($(this).prop("checked") ? $(this).val() : "");
        console.log($("#hiddenTargetDk").val());
    });
</script>

$('#checkDk')。单击(函数(){
$('#hiddenTargetDk').val($(this.prop(“选中”)?$(this.val():“”);
console.log($(“#hiddenTargetDk”).val();
});

我相信这项功能是在.NET4.0和之后添加的。NET framework使用runat=“server”属性重命名所有对象的ID,IIS、IIS Express和IIS的每个不同版本/配置可能会以不同方式重命名它们,这就是代码中断的原因。将客户端ID模式设置为静态可确保ASP.NET不会重命名您的ID,而是使用另一个字段保存其“真实名称”。祝你好运

谁否决了我?——————我保证这是正确的答案。我认出了ASP.NET语法,他原来的创可贴,为什么它坏了,以及如何正确地修复它。对,好吧,选民,我很想知道为什么我的答案是错误的。这是一个简单的身份不匹配。可以安全地假设你有一个议程。除非你有5个多账户,你甚至不能一次拿2分让我慢下来,算算吧。
$('#hiddenTargetDK')
<script>
    $('#checkDk').click(function () {
        $('#hiddenTargetDk').val($(this).prop("checked") ? $(this).val() : "");
        console.log($("#hiddenTargetDk").val());
    });
</script>