2016-02-29 32 views
0

有人可以解釋爲什麼我的JavaScript不工作。我正在嘗試設置我網站上隱藏字段的值。該腳本已經工作,但出於某種原因,它不再工作。
這裏是JavaScriptJQuery/Javascript上點擊不發射

<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> 

這裏是hiddenfield:

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

回答

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>

+0

對,好的選民,我想知道爲什麼我的答案是錯誤的原因?這是一個簡單的id不匹配。假設你有一個議程是安全的。除非你有5個多個賬戶,否則你甚至不能以每次2分的速度放慢我的速度,做數學計算。 – zer00ne

-1

你綁定到changed事件,並等待它在click。我認爲這不是它應該如何工作。

試試這個:

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

你要設置的值到input隱藏使用其id這是#hiddenTargetDk#MainContent_hiddenTargetDk

DEMO

的jQuery:

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

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

您的問題是其他答案的組合,並與ASP.NET祕密後端怪癖。

ASP.NET正在更改隱藏字段的ID。您需要將的ClientIDMode =「靜態」屬性添加到您的領域,你想使用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 =「server」屬性的所有對象的ID,而IIS,IIS Express和IIS的每個不同版本/配置都可以對它們進行不同的重命名,這就是爲什麼代碼被破壞的原因。將客戶端ID模式設置爲靜態可確保ASP.NET不重命名您的ID,而是使用另一個字段來保存其「真實姓名」。祝你好運!

+1

誰低估了我? - 我保證這是正確的答案。我認識到ASP.NET語法,他最初的創可貼,它爲什麼會崩潰,以及如何以正確的方式修復它。 – Jrud