我的問題是,文本框的行屬性總是0可能是因爲代碼不知道有多少行文本框將呈現文本。所以我顯示3行和溢出是隱藏的,我想添加按鈕,將打開全文。但是隻有當文本框多於3行時才顯示按鈕。那麼有沒有什麼辦法可以在代碼中檢查。檢查多行文本框動態生成真代碼是否溢出
TextBox text = new TextBox();
text.ID = "Poruka" + i;
text.Text = podaci.GetString(2);
text.TextMode = TextBoxMode.MultiLine;
text.Width = Unit.Pixel(535);
text.Height = Unit.Pixel(45);
text.Enabled = false;
text.Style.Add("overflow", "hidden");
PanelSadrzaj.Controls.Add(text);
if (text.Text.Length > 198 || ????)
{
Button vise = new Button();
vise.ID = "Vise" + i;
vise.Text = "Prikaži cijelu poruku";
vise.Width = Unit.Pixel(200);
vise.CssClass = "ButtonDodaj";
vise.Font.Bold = true;
vise.OnClientClick = "PrikaziPoruku_Click";
PanelSadrzaj.Controls.Add(vise);
}
編輯:
Soultion是添加此funcuton,並在的ContentTemplate調用它的UpdatePanel。
功能代碼:
function CheckOverflow() {
$("textarea").each(function() {
var threshold = 2;
var sender = $(this);
var lineCount = sender.val().split("\n").length;
var overflow = sender[0].offsetHeight < sender[0].scrollHeight - threshold;
var id = $(this).attr('id');
id = id.slice(-1);
if (lineCount > 3 || overflow) {
$('#Buttonid' + id).show();
}
else {
$('#Buttonid' + id).hide();
}
alert(id);
});
}
的UpdatePanel代碼:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<script type="text/javascript" language="javascript">
Sys.Application.add_load(CheckOverflow);
</script>
<ContentTemplate>
</asp:UpdatePanel>
由於irongeek
問題是如果例如用戶鍵入50個字符和2個換行符將是4行將此代碼識別。 –
是的,如果文本有換行符,代碼是無用的:/ –
你需要添加邏輯來計算馬車和新的線返回,即四行文字看起來像「Line1 \ r \ nLine2 \ r \ nVeryLong Line 3 \ r \ n最後一行「。我也認爲你需要小心使用固定寬度的字體,否則你會遇到問題。 – Damon