点击不点火的JQuery / Javascript

时间:2016-02-29 21:33:05

标签: javascript jquery

有人可以向我解释为什么我的javascript无效。我正在尝试设置我网站上隐藏字段的值。该剧本已经奏效,但由于其原因,它不再适用了。
这是javascript

(^|\W)@([A-Za-z]+\w*)(?=$|\W)

这是按钮。

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

这是隐藏的领域:

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

4 个答案:

答案 0 :(得分:1)

$(#hiddenTargetDk)不是$(#MainContent_hiddenTargetDk)

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
<input type="hidden" id="hiddenTargetDk" runat="server" />
<label runat="server" id="dk" class="btn btn-default">
                            <input runat="server" id="checkDk" type="checkbox" value="208" onselect="getvalue()" autocomplete="off">
                            Denmark
                        </label>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
<script>
    $('#checkDk').on('change', function () {
        $('#hiddenTargetDk').val($(this).prop("checked") ? $(this).val() : "");
        console.log($("#hiddenTargetDk").val());
    });
</script>
</body>
</html>

答案 1 :(得分:1)

您必须使用id #hiddenTargetDk而不是#MainContent_hiddenTargetDk

$('#checkDk').on('change', function () { $('#hiddenTargetDk').val($(this).prop("checked") ? $(this).val() : ""); console.log($("#hiddenTargetDk").val()); }); 将值设置为隐藏Accept-Language

<强> DEMO

<强> jQuery的:

<div ngIf="messages">…</div>

答案 2 :(得分:-1)

您已绑定changed事件,并在click上等待它。我认为这不是它应该如何运作的。

请改为尝试:

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

答案 3 :(得分:-1)

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

ASP.NET正在更改隐藏字段的ID。您需要添加ClientIDMode =&#34;静态&#34;您想要像这样使用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识别您的对象:

$('#checkDK')

$('#hiddenTargetDK')

我想像我这样编写JQuery:

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

此功能已添加到.NET 4.0中并且在我相信之后。 .NET框架使用runat =&#34; server&#34;重命名所有对象的ID。它们上的属性,IIS,IIS Express以及IIS的每个不同版本/配置可能会以不同方式重命名它们,这就是您的代码损坏的原因。将客户端ID模式设置为静态可确保ASP.NET不重命名您的ID,而是使用另一个字段来保存它&#34;真名称&#34;。祝你好运!