私は、チェックされたチェックボックスの数を追跡するためにスパンを更新する一連のチェックボックスを生成しようとしています。 )。私はそれを処理する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('StMarySpan', 'StMaryCheck')"
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);
});
});
は、関数が実際に呼び出されている:他の選択肢については
、あなたは簡単にjQueryを使用して、選択したチェックボックスの数を得ることができますか? – Pbirkoff
いいえ、ただし、インラインJavaScriptが正しく出力されていないためです。私はonclickハンドラを介して適切に呼び出されるようにすることができれば、updateSelected()が正しく動作することを確認するのが快適です。この答えは –