我在c#MVC4中编码。
在我的create.cshtml中
我有这段代码:
@{
ViewBag.Title = "My wonderful creation";
}
<script type="text/javascript">
$(document).ready(function() {
$("#word_count").on('keyup', function() {
var words = this.value.match(/\S+/g).length;
if (words > 100)
{
var trimmed = $(this).val().split(/\s+/, 100).join(" ");
$(this).val(trimmed + " ");
}
});
});
</script>
<div class="editor-field">
@Html.TextAreaFor(model => model.mywonderful, new { @id = "word_count" })
@Html.ValidationMessageFor(model => model.mywonderful)
</div>
这不起作用。当我查看源代码时,代码如下所示:
<script type="text/javascript">
$(document).ready(function() {
$("#word_count").on('keyup', function() {
var words = this.value.match(/\S+/g).length;
if (words > 100)
{
var trimmed = $(this).val().split(/\s+/, 100).join(" ");
$(this).val(trimmed + " ");
}
});
});
</script>
<div class="editor-field">
<textarea id="word_count" name="mywonderful" rows="2" cols="20">
</textarea>
<span class="field-validation-valid" data-valmsg-for="mywonderful" data-valmsg-replace="true"></span>
</div>
<script src="/Scripts/jquery-1.9.1.js"></script>
如何在c#mvc中使用单词计数和验证。这在php中非常容易,但是,c#mvc是一个不同的故事。
我最终使用普通的旧JavaScript,以便我可以使用相同的代码来处理几个textareas:
<script type="text/javascript">
var maxWords = 100;
function limitLengthInWords(field)
{
var value = field.value,
wordCount = value.split(/\S+/).length - 1,
re = new RegExp("^\\s*\\S+(?:\\s+\\S+){0," + (maxWords - 1) + "}");
if (wordCount >= maxWords)
{
field.value = value.match(re);
}
document.getElementById('description_count').innerHTML = maxWords - wordCount;
}
</script>
答案 0 :(得分:1)
你使用它后加载了jquery lib!所以你可以将你的顶级脚本移到底部或者在顶部加载jquery lib
<script src="/Scripts/jquery-1.9.1.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#word_count").on('keyup', function() {
var words = this.value.match(/\S+/g).length;
if (words > 100)
{
var trimmed = $(this).val().split(/\s+/, 100).join(" ");
$(this).val(trimmed + " ");
}
});
});
</script>
和
您正在检查textarea,因此您需要检查innerHtml而不是值
var words = $(this).html().match(/\S+/g).length;
答案 1 :(得分:0)
这与C#或MVC无关 - 在使用jQuery代码之后包含jQuery 。当您有任何意外行为时,您首先要检查的是控制台。您会看到$ is undefined
作为此问题的第一个线索。要解决此问题,请尝试以下操作:
<script src="/Scripts/jquery-1.9.1.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#word_count").on('keyup', function() {
var words = this.value.match(/\S+/g).length;
if (words > 100) {
var trimmed = $(this).val().split(/\s+/, 100).join(" ");
$(this).val(trimmed + " ");
}
});
});
</script>