У меня есть TextArea (и под ним div, который показывает количество символов) внутри Razor для l oop. При изменении текста элемента управления рассчитывается и отображается количество символов.
Чтобы сделать это, мне нужно захватить событие изменения textarea и получить доступ к следующему div и установить текст. Я не мог этого сделать. Цени любую помощь, и ниже приведен код.
cs html:
for (var index = 0; index < Model.List?.Count; index++)
{
<div class="form-group row">
<div class="col-md-12">
<label class="control-label" style="text-align: left;">Message Text: </label>
@Html.TextAreaFor(model => model.List[index].Message, 5, 100,
HtmlAttributeHelper.ConditionalDisable(disableFlag, new
{
@class = "form-control messageText",
maxlength = "512",
style = "width:100%;",
//name = "messageText",
spellcheck = "true"
//onkeyup = "onMessageChange(this, " + @index + ')'
}))
</div>
<div class="col-md-12" class="charCounter">Characters(s) Count</div>
</div>
}
Я попытался использовать метод onkeyup = onMessageChange (который комментируется), а также доступ к нему в document.ready , Хотя события инициированы, я не смог получить доступ к textarea / div.
javascript:
$(document).ready(function () {
$(".messageText").keyup(function() {
alert("changing");
$(this).next(".charCounter").innerText = "100 Characters test";
});
});
function onMessageChange(obj, id) {
$(this.id).val(0);
debugger;
var maxLen = obj.maxLength;
var len = obj.innerText.length;
if (len > maxLen) {
obj.innerText = obj.innerText.substring(0, maxLen);
} else {
$("div").next("charCount").html("Character(s) Counter: " + len + "/" + maxLen);
//Approx Nos of Message(s): 1
}
};