Rumah  >  Artikel  >  hujung hadapan web  >  Penyelesaian kepada kaedah input Cina tidak mencetuskan peristiwa onkeyup_Pengetahuan asas

Penyelesaian kepada kaedah input Cina tidak mencetuskan peristiwa onkeyup_Pengetahuan asas

WBOY
WBOYasal
2016-05-16 16:42:161722semak imbas

Dalam dua hari yang lalu, saya telah mengusahakan fungsi yang memerlukan pemantauan masa nyata input kotak teks, dan menghadapi masalah menjijikkan bahawa kaedah input Cina tidak boleh mencetuskan acara onkeyup.

Prestasi khusus adalah seperti berikut:

Apabila mendengar acara keyup input, dalam kes kaedah input bahasa Inggeris, perubahan dalam nilai kotak teks boleh dikesan dalam masa nyata melalui acara keyup bagaimanapun, apabila kaedah input bertukar kepada Cina, acara keyup input tidak akan Dicetuskan secara normal. Ini adalah cara terawal untuk menulisnya.

<html>
<head>
<script type="text/javascript" src="http://www.jb51.net/static/js/jquery-1.4.2.min.js"></script>
</head>
<body>
  <p>
    使用keyup事件检测文本框内容:
  </p>
  <p>
    <input type="text" name="keyup_i" id="keyup_i" autocomplete="off"/>
    <span id="keyup_s"></span>
    <script type="text/javascript">
      $('#keyup_i').bind('keyup', function(){
        $('#keyup_s').text($(this).val());
      })
    </script>
  </p>
</body>
</html>

Seperti yang anda lihat, cara penulisan ini menghadapi masalah bahawa acara keyup tidak boleh dicetuskan dalam bahasa Cina. Jadi saya mencari penyelesaian. Saya teringat bahawa gesaan bar carian Baidu nampaknya tidak mempunyai masalah ini, jadi saya mula melihat js Baidu. Js Baidu agak hodoh... Nama kaedah semuanya adalah satu huruf Pada akhirnya, saya mendapati bahawa saya mungkin menggunakan tamat masa untuk membuat pemasa untuk sentiasa memantau pengubahsuaian kotak input. Tidak begitu berpuas hati dengan kaedah ini. Oleh itu, saya terus mencari untuk melihat sama ada terdapat penyelesaian yang lebih baik, dan menemui dua peristiwa oninput dan onpropertychange.

oninput tersedia di bawah firefox, manakala onpropertychange tersedia di bawah ie. Terdapat beberapa perbezaan antara kedua-dua kaedah.

oninput hanya boleh mengesan perubahan dalam atribut nilai, manakala onpropertychange boleh mengesan perubahan dalam semua sifat yang mengandungi nilai. Jadi saya mula menukarnya kepada ini.

<html>
<head>
<script type="text/javascript" src="http://www.jb51.net/static/js/jquery-1.4.2.min.js"></script>
</head>
<body>
  <p>
    使用oninput以及onpropertychange事件检测文本框内容:
  </p>
  <p>
    <input type="text" name="inputorp_i" id="inputorp_i" autocomplete="off"/>
    <span id="inputorp_s"></span>
    <script type="text/javascript">
      //先判断浏览器是不是万恶的IE,没办法,写的东西也有IE使用者
      var bind_name = 'input';
      if (navigator.userAgent.indexOf("MSIE") != -1){
        bind_name = 'propertychange';
      }
      $('#inputorp_i').bind(bind_name, function(){
        $('#inputorp_s').text($(this).val());
      })
    </script>
  </p>
</body>
</html>

Masalah selesai.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn