2012-01-12 8 views
0

私は、チェックされたチェックボックスの数を追跡するためにスパンを更新する一連のチェックボックスを生成しようとしています。 )。私はそれを処理するJavaScript関数updateSelectedを作成しましたが、それはカウントするスパンのIDとチェックボックスのクラスが必要ですので、私は、各チェックボックスを生成するには、このコードを試してみました:Html.CheckBox onclickイベントがエスケープされています

@Html.CheckBox(string.Format("contentprofilestate[{0}].selected", i), 
    new { onclick = "updateSelected('" + selectedSpanId + "', '" + checkboxClass + "')" }) 

これが生成します以下のHTML:

<input id="contentprofilestate_6__selected" name="contentprofilestate[6].selected" 
onclick="updateSelected(&#39;StMarySpan&#39;, &#39;StMaryCheck&#39;)" 
type="checkbox" value="true" /> 

はどのようonclickイベントハンドラは、アポストロフィをエスケープせずにレンダリングするために得ることができますか?あるいは、このタスクを達成するためのより良い方法があるかどうか(もしそうなら、あなたの提案にjQueryを自由に使用することができます)?

注再:レスター

私は新しいプロジェクトを作成し、このビューを作成し、それはまだアポストロフィをエスケープ:

@{ 
    ViewBag.Title = "index"; 
} 

<h2>index</h2> 

@Html.CheckBox(string.Format("contentprofilestate[{0}].selected", 0), new { onclick = "updateSelected('" + "test" + "', '" + "test2" + "')" }) 

代替ソリューション

私がすることができませんでしたアポストロフィがエスケープされないようにする方法を理解するので、インラインJavaScriptなしで必要なことを行うjQueryのロジックを書きました:

jQuery(document).ready(function() { 
    jQuery(':checkbox').click(function() { 
     var clientHeader = jQuery(this).closest('.client-header'); 
     var clientCheckedSpan = clientHeader.find('.client-checked'); 
     var inputChecked = clientHeader.find('input:checked'); 
     clientCheckedSpan.text(inputChecked.length); 
    }); 
}); 
+0

は、関数が実際に呼び出されている:他の選択肢については

、あなたは簡単にjQueryを使用して、選択したチェックボックスの数を得ることができますか? – Pbirkoff

+0

いいえ、ただし、インラインJavaScriptが正しく出力されていないためです。私はonclickハンドラを介して適切に呼び出されるようにすることができれば、updateSelected()が正しく動作することを確認するのが快適です。この答えは –

答えて

1

アポストロフィがエンコードされていることは非常に奇妙です。私は彼らがそうであるとは思わなかったし、迅速なテストをした後、彼らはそうではありません。おそらく、その視点で何か他のことが起こっているでしょう。空のビューに1行だけ置くと、私は同じ問題を抱えないだろうと賭けています。

var numChecked = $("input:checked[id^=contentprofilestate]").size(); 
+0

+1です。すでに存在するものを使用して選択を行う方が簡単です(インラインJavaScriptを避けることもできます)。 – JasCav

+0

それぞれに独自のセクションがある多数のクライアントがあり、それぞれのチェックボックスのグループを個別に数えたいと思います。それがクラス(クライアントをエンコードする)とスパン(クライアントのヘッダにある)を渡す理由でした。私は空のビューをチェックして、エンコーディングがどこで起こっているのかを確認できますが、チェックボックスの正しいサブセットのみがカウントされるように正しい方法を考えていますか? –

関連する問題