8

textarea実装している MVC アプリケーションに がありAspNetSpellCheckます。デバッガーは、 および へのtextarea変更がdisplay: none; visibility: hidden;およびdivで生成されることを通知id="abc"class"="pqr"ます。

<input type="hidden" value="" name="userid" id="useid" />

また、すべてのテキスト領域/その他のコントロールの変更検出を実装しています....

var somethingChanged = false;
$(document).ready(function() { 
    $('input').change(function() { 
       somethingChanged = true; 
    }); 
});

テキストエリアが非表示になるため、イベントが自動的に発生しないと思いますchange()。上記の場合にイベントを発生させる解決策は何ですか? ありがとう!

編集

AspNetSpellCheck では、以下が私のコードです。

  @{  

  ASPNetSpell.Razor.SpellAsYouType mySpell = new ASPNetSpell.Razor.SpellAsYouType();
   mySpell.InstallationPath = ("/Content/ASPNetSpellInclude");
   mySpell.FieldsToSpellCheck = "TextArea1";
}

<textarea id="TextArea1" cols="20" rows="2">bedddly</textarea>
@Html.Raw(mySpell.getHtml())

<script type="text/javascript" language="javascript">

$(document).ready(function () {
    $('input[type="hidden"]').change(function () {
        debugger;
        alert('hi');
        // somethingChanged = true; 
    });
});


 </script>

デバッガーは以下のコードを生成し、テキスト領域が非表示になり、新しい DIV 構造が生成されます。

 <div tabIndex="null" class="livespell_textarea" id="TextArea1___livespell_proxy">

 <textarea id="TextArea1" style="display: none; visibility: hidden;" rows="2" cols="20">
4

3 に答える 3

15

非表示の値を使用すると、変更イベントを自分でトリガーする必要があります。

$('#hiddenInput').val('newval').trigger('change');
于 2012-10-04T16:30:47.773 に答える
5

テキストエリアで値がいつ変更されているかわからない場合はsetInterval、変更を監視するために使用できます

例えば

  var objTextBox = document.getElementById("your_id");
  oldValue = objTextBox.value;

  function track_change() {
    if (objTextBox.value != oldValue) {
      oldValue = objTextBox.value;
      alert('value of input has changed');
    }
  }

  setInterval(function () {
    track_change()
  }, 1000);
于 2012-10-04T16:37:01.703 に答える
2

これを試してみてください..イベントを自分でトリガーする

$('input[type="hidden"]').change(function() { 
     alert('hi');
      // somethingChanged = true; 
});

$('#useid').val("20").change();

フィドル

</p>

于 2012-10-04T16:32:08.597 に答える