2015-05-02 14 views
6

İki alanım var. Textarea ve giriş türü metin. Bunların içinde kullanıcılar için bu düzenlenemez yapmak istiyorum gibi <firstname> gibi bazı etiketler vardır. ve eğer tüm etiketi silmeye çalışırsa kaldırır. Burada buMetin alanında veya metin alanında salt okunur bazı özel sözcükler nasıl yapılır

$(function() { 
      var tb = $("#t").get(0); 
      $("#t").keydown(function (event) { 
       var start = tb.selectionStart; 
       var end = tb.selectionEnd; 
       var reg = new RegExp("(<.+?>)", "g"); 
       var amatch = null; 
       while ((amatch = reg.exec(tb.value)) != null) { 
        var thisMatchStart = amatch.index; 
        var thisMatchEnd = amatch.index + amatch[0].length; 
        if (start <= thisMatchStart && end > thisMatchStart) { 
         event.preventDefault(); 
         return false; 
        } 
        else if (start > thisMatchStart && start < thisMatchEnd) { 
         event.preventDefault(); 
         return false; 
        } 
       } 
      }); 
     }); 

ile çalışıyorum Js fiddle

ama çalışmıyor.

Sadece cursur etiketin başındaysa, o zaman düzenlenebilir değildir. Fakat cursur etiketin sonundaysa, bu düzenlenebilir. Ben fullu düzenlenemez yapmak istiyorum.

cevap

3

yapıldı. Başlangıç ​​ve bitiş seçiciye +1 ekliyorum. ve işçi bağlantı JSfiddle html kodu

<input type="text" class="tag-check" value="<tagname> this is just a check" > 
<textarea id="t" class="tag-check" rows=5 cols="80">Hello this is a test <companyname> 

     <lastname> this part is editable <firstname>  

    </textarea> 

js kodu .here edilir mi çalışıyor

$(function() { 


      $(".tag-check").keydown(function (event) { 
       var tb = $(this).get(0); 
       var start = tb.selectionStart; 

       var end = tb.selectionEnd; 
       var reg = new RegExp("(<.+?>)", "g"); 
       var amatch = null; 
       while ((amatch = reg.exec(tb.value)) != null) { 
        var thisMatchStart = amatch.index-1; 
        var thisMatchEnd = amatch.index + amatch[0].length+1; 
        if (start <= thisMatchStart && end > thisMatchStart) { 
         event.preventDefault(); 
         return false; 
        } 
        else if (start > thisMatchStart && start < thisMatchEnd) { 
         event.preventDefault(); 
         return false; 
        } 
       } 
      }); 
     }); 
İlgili konular