2012-12-19 18 views
6

Genişliğe ulaşıldığında bir HTML tablo hücresinde ek giriş yapılmasını önlemek istiyorum.Sabit genişliğe ulaşıldıktan sonra tablo hücresindeki girişi engelle?

Tablonun sabit bir düzeni, sargı ve belirli bir genişliği vardır. Taşma şu anda gizli olarak ayarlanmış.

Girintiyi filtrelemek (ve en sonunda engellemek), sabit genişlikte durması, böylece taşma olmayacak (gizli veya başka bir şekilde). Şu anda hücre ek satırlara genişlemeyecek şekilde jQuery kullanarak taşıma dönüşü filtreleme yapıyorum. Belki

Bir HTML tablosunun çok fazla rica ediyorum ...

+1

Genişliği nasıl ölçmek istersiniz? Hücrenin CSS genişliği veya içerdiği karakter sayısı? –

+0

İlginç bir soru soruyorsunuz, ancak orijinal olarak genişliği kullanmayı ölçtüm. Samuel'in cevabını kullanarak ve sadece giriş dizesinin uzunluğunu kontrol ederek, karakter sayısı kolayca belirlenmelidir. –

cevap

3
Olası bir çözüm, bir gizli alanda keydown hücre içeriğini kopyalamak için ve bu alanın değerini hesaplamak etmektir

:

$("table input").on("keydown", function(e) { 
    $("#copy").text(this.value); 

    var width = $("#copy").outerWidth(); 
    console.log("w: " + width); 

    var code = e.keyCode ? e.keyCode : e.which; 
    if (width > 50 && code !== 8 && code !== 49) { 
     return false; 
    } 
}); 

Böyle bir çözüme sahip bir keman oluşturdum: http://jsfiddle.net/scaillerie/hnRjB/2/.

:

belirtmek için bir nokta font-family ve font-size input ve doğru değeri olması için div aynı olması gerektiğini, yani CSS kuralının nedenidir

* { 
    font-family: arial; 
    font-size: 1em; 
} 

Ancak, * yerine, gereksinimlerinize uyacak şekilde kısıtlamanız gerekir (örneğin, table input, #copy).


DÜZENLEME:

Sadece bu kodla, kullanıcı giriş uzunluğundan daha sadece daha fazla girebilir, ancak amacıyla, kopyalanan alana bazı "uzun" karakter eklemek unutmayın genişliği test edin: http://jsfiddle.net/scaillerie/hnRjB/3/.

+0

Bu, devam ettiğim cevap gibi görünüyor. Tablo hücresinde de grafik olabileceği için biraz daha karmaşık olabilir. Sadece grafiklerin genişliğini karşılamak zorunda kalacağım. –

İlgili konular