2012-09-17 118 views
1

我試圖切換使用下面的代碼一個複選框的值:切換複選框值

<div class="control-group"> 
     <label class="control-label checkbox" for="IsViewAsWebpage"> 
      {{#if this.IsViewAsWebpage}} 
       <input type="hidden" id="IsViewAsWebpage" name="IsViewAsWebpage" value="true"/> 
       <input type="checkbox" class="enable-checkbox" checked /> 
      {{else}} 
       <input type="hidden" id="IsViewAsWebpage" name="IsViewAsWebpage" value="false"/> 
       <input type="checkbox" class="enable-checkbox" /> 
      {{/if}} 
      <span>View as Webpage</span> 
     </label> 
    </div> 



'click .enable-checkbox': function (e) { 
       if (e.currentTarget.parentElement.htmlFor == "IsViewAsWebpage") { 
        this.$('#IsViewAsWebpage').is(':checked'); 
      } 

     } 

我知道我misssing的點擊功能的東西。我基本上想要在用戶點擊它時切換複選框的值。有人可以指點我正確的方向請。謝謝。

+0

什麼附加到您的Javascript Oo? – Stphane

+1

呃,這是我見過的最奇怪的JS代碼。你能發佈渲染的標記嗎? – undefined

+0

這些是單獨的文件。只需將代碼一起發佈 – dotNetNewbie

回答

1

當您的複選框被點擊時,它會切換。這是複選框的工作方式。

如果你想隱藏的輸入來改變value當複選框被觸發,我想你想要的是這樣的:

$(".enable-checkbox").change(function (e) { 
    if($(this).parent().attr("for") == "IsViewAsWebpage") { 
     var checked = $(this).is(":checked"); // Returns true/false. 
     $('#IsViewAsWebpage').attr("value", checked); // Sets true/false. 
    }   
}); 
+0

我試過以上。但是發佈的價值仍然無法切換。例如。 IsViewAsWebpage加載時爲false,然後檢查它並點擊Submit ....它仍然發佈爲false – dotNetNewbie

+0

@dotNetNewbie您的標記爲_invalid_ – undefined

+0

@undefined:您在哪裏看到錯誤? – dotNetNewbie

1

如果你想使用handlebars.js切換內容當你點擊一個檢查中,您將需要通過調用車把每次更換你的內容,你做出的修改您的複選框

$(".enable-checkbox").change(function (e) { 
    if($(this).parent().attr("for") == "IsViewAsWebpage") { 
     var checked = $(this).is(":checked"); 
     IsViewAsWebpage = checked; 
     $("#yourcontainer").html(Handlebars.compile(yourtemplatesource)); 
    } 

} 

那麼你IsViewAsWebpage變量應該是全球性的,你的鬍子條件應該只是:

{{#if IsViewAsWebpage}} 

但是,這是非常複雜的......只是使用Esthete解決方案,它會爲您節省很多時間。

+0

另外請記住,除非輸入鬆散焦點,否則更改不會觸發。如果您希望它立即生效,您需要將Click添加到偵聽器。但保持更改,鼠標不是檢查複選框的唯一方法 – Kevthunder