![](/img/trans.png)
[英]How to clear a textbox on single press of Backspace key using Javascript?
[英]Disable backspace in textbox via javascript
我有一個由 Ajax Control Toolkit 日歷擴展的文本框。
我想讓用戶無法編輯文本框,而必須使用日歷擴展器進行輸入。
我已經設法阻止了除退格鍵之外的所有鍵!
這是我到目前為止:
<asp:TextBox ID="TextBox1" runat="server" onKeyPress="javascript: return false;" onKeyDown="javascript: return false;" onPaste="javascript: return false;" />
我將如何使用 javascript 在文本框中禁用退格鍵?
編輯
進行了編輯,因為我需要 javascript 中的解決方案。
編輯
原來 onKeyDown="javascript: return false;" 確實有效。 我不知道為什么它以前不起作用。 我嘗試使用一個新的文本框,它很好地阻止了退格。 很抱歉所有發布答案希望得到一些代表的人。 在我將其標記為賞金之后。
我的文本框現在(似乎)可以阻止所有按鍵操作,並且仍然可以與日歷擴展器一起使用。
ZX12R接近了。 這是正確的解決方案:
文本框是這樣的:
<asp:TextBox ID="TextBox1" runat="server" onKeyDown="preventBackspace();"></asp:TextBox>
腳本如下所示:
<script type="text/javascript">
function preventBackspace(e) {
var evt = e || window.event;
if (evt) {
var keyCode = evt.charCode || evt.keyCode;
if (keyCode === 8) {
if (evt.preventDefault) {
evt.preventDefault();
} else {
evt.returnValue = false;
}
}
}
}
</script>
首先,退格鍵不會通過 Key Press,所以你必須使用 Key Down。
你不能只使用 HTML readonly="readonly"
屬性嗎?
<input type="text" name="country" value="Norway" readonly="readonly" />
<textarea rows="3" cols="25" readonly="readonly">
It should work! :)
</textarea>
如何使用顯示標簽和隱藏文本框將值返回給服務器?
您只需要在客戶端控制器上應用只讀,這樣 asp.net 就看不到它並且仍然在回發時讀取數據。 您可以通過多種方式執行此操作,如果您使用 jQuery,其中一種更簡單的方法是向文本框添加一個類,例如。 cssclass="readonly"
和$(".readonly").attr("readonly", true);
.
正如其他人所說 ReadOnly="True" 會破壞回發機制。
我相信您可以通過在 PageLoad 期間直接訪問 Request 對象在代碼隱藏中解決它:
//assuming your textbox ID is 'txtDate'
if(Page.IsPostBack)
{
this.txtDate.Text = Request[this.txtDate.UniqueID];
}
您的另一個選擇是允許禁用控件在表單上回發,但這有點安全問題,因為通過腳本修改的只讀字段可能會返回:
<form id="MyForm" runat="server" SubmitDisabledControls="True">
..
</form>
我不確定此屬性對 ReadOnly (vs Enabled="False") 控件的影響,但值得一試。
最后 - 我確實遇到了你幾年前遇到的同樣問題,從我記得的情況來看,使用標記為 readonly 和 runat="server" 的 html 輸入和實際的服務器端控件之間存在差異,其中 ReadOnly =“真”。
我有一種感覺:
<input type="text" readonly="readonly" runat="server" id="myTextBox" />
可能仍然允許數據通過,盡管在代碼隱藏中您必須將控件視為 HtmlInputText 或 HtmlGenericControl 與 TextBox。 不過,您仍然可以訪問所需的屬性。
反正只是一些想法......
我可以用 Jquery 做類似的事情。 放在這里僅供參考!
$("#inputID").keypress(function (e)
{e.preventDefault();});
$("#inputID").keydown(function (e)
{e.preventDefault();});
第一個防止按鍵,而第二個防止按鍵事件。
仍然是一個 JS 菜鳥,所以請隨時指出它的好 / 壞處。
這是一個可能的解決方案...添加一個事件偵聽器...
<asp:TextBox ID="TextBox1" runat="server" onKeyPress="KeyCheck;" />
然后功能可以是這樣的..
function KeyCheck(e) {
var KeyID = (window.event) ? event.keyCode : e.keyCode;
if (KeyID == 8 ) {
alert('no backspaces!!);
}
}
懷疑它是否必須是 onkeypress 或 onkeyup ...
ReadOnly 屬性沒有幫助。 即使您的文本框是只讀的,退格鍵仍然會將您的瀏覽器帶回頁面。
使用非只讀和非禁用的常規文本框,只需使用客戶端 JavaScript 忽略按鍵。 這將忽略所有按鍵,因此您將擁有 READONLY 行為,並且還將忽略退格鍵。
<input type="text" value="Your Text Here" onkeydown="return false;" />
無需調用任何函數,只需嘗試以下操作:
<asp:TextBox runat="server" ID="txt" onkeydown="return false;"
onpaste = "return false;" onkeypress="return false;" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.