2017-01-09 89 views
0

我有這個textbox,對於輸入255有DB的限制。而且我試圖在JS中構建一個函數,該函數阻止用戶在該文本框中插入超過255個字符。javascript中的文本框值

這裏是asp.net代碼:

<asp:TextBox Id="textbox" TextMode="MultiLine" 
      oninput="F(id,this.value.length, 255)" 
      runat="server" Columns="25" Rows="5"></asp:TextBox> 

這裏是在JS代碼(只是一個測試):

this.textCounter = function (ref,value, maxlimit) { 
    if (value > maxlimit) { 
     $('#textbox').value=" "; 
    } 
    return true; 
} 

不知何故,$('#textbox').value是不確定的。 我能做什麼?

+0

如果你正在使用'jQuery'那麼它有方法'來獲得/設定值即'$( '#文本框')val' VAL(「AAAA 「);'設置和$('#textbox')。val();'獲取。 'value'是javascript中的一個屬性,您正在使用jQuery對象,因此您的代碼無法工作。 – guleria

回答

1

您應該使用$('#textbox')。html而不是$('#textbox').value。 $('#textbox')。html獲取文本框標記之間的內容。因爲文本框沒有值屬性。

1

您需要使用

$("#<%= textbox.ClientID %>").val("myValue") 

ASPNET重命名文本框的ID,以確保沒有在客戶端沒有副本,所以textbox能成爲像PlaceHolder1_textbox。然後你的硬編碼javscript參考將不再工作。

+0

它說的語法是錯誤的。我必須把ClientID =「static」放進去? –

+0

不建議使用'ClientIDMode =「Static」'。它可能導致重複的ID。 – VDWWD

-1

當您定義文本時,您必須指定ClientIDMode="Static"。用這種方法,.NET用你的名字創建一個輸入框。通常,輸入框名稱比您選擇的名稱更復雜。

另一種方法是在javascript中使用一些代碼。而不是$('#textbox')您必須使用

$('#<%= yourtextbox.CliendId%>') 
+0

至少要確保代碼是正確的......'$('#<%= yourtextbox.ClientID%>')' – VDWWD

+0

是的。你必須在ASP.NET頁面中使用它 – Enrico

1

您可以在您的asp.net控件中使用maxlength HTML屬性。這將工作正常。

maxlength="255" 

編輯:

<asp:TextBox Id="textbox" onKeyPress="return(this.value.length < 255);" runat="server" TextMode="MultiLine" Columns="25" Rows="5"></asp:TextBox> 
+0

試過這個。沒有制定出來。 –

+0

@GeorgeGreat可以用MaxLength propety粘貼完整的代碼嗎? –

+0

這個? public virtual int MaxLength {set;得到; } Member of System.Web.UI.WebControls.TextBox –