0

私は 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を使用することになりました:

<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>
4

2 に答える 2