簡體   English   中英

通過Javascript設置值可將焦點設置為IE10中的文本框

[英]Setting value via Javascript sets focus to textbox in IE10

我有以下文本框

<asp:TextBox runat="server" ID="txtSeleID" Columns="12" MaxLength="14" 
             onfocus="javascript:SetSearchText();" 
             onchange="javascript:SetSearchText();"></asp:TextBox>
<asp:RegularExpressionValidator id="REV_SeleID" runat="server" 
             ErrorMessage="ID must contain up to 12 numbers." 
             Display="Dynamic" ControlToValidate="txtSeleID" 
             ValidationExpression="ID...|^\s*(\d{1,12}|\d{4}-\d{4}|\d{3}-\d{4}|\d{2}-\d{4}|\d{1}-\d{4}|\d{1}-\d{4}-\d{4}|\d{2}-\d{4}-\d{4}|\d{3}-\d{4}-\d{4}|\d{4}-\d{4}-\d{4})\s*$" CssClass="ValidationError" SetFocusOnError="True">(!)
</asp:RegularExpressionValidator>

和下面的javascript:

function SetSearchText() {
var Tbox = document.getElementById("<%=txtSeleID.ClientID%>");
if (Tbox.value == "ID...") {
    Tbox.value = "";
    Tbox.className = "";
}
}
$(document).ready(function () {
var Tbox = document.getElementById("<%=txtSeleID.ClientID%>");
if (Tbox.value.length == 0) {
    Tbox.className = "quickEnter";
    Tbox.value = "ID...";
}
if (Tbox.value == "ID...") 
    Tbox.className = "quickEnter";
});

這是按鈕:

<asp:ImageButton EnableViewState="false" id="SubmitBtn" runat="server" 
    ImageUrl='<%#Page.ResolveUrl("~/images/btn_submit.gif")%>' 
    onclick="Submit_Click" ToolTip="Submit" />

問題是,當我單擊提交按鈕時,它將調用SetSearchText()函數並將其值設置為"" 在IE 10中,它將焦點設置到此文本框,我必須再次單擊“提交”按鈕才能將其提交。

如果我注釋掉該值的設置,則不會發生焦點問題。

嘗試提交時,如何防止瀏覽器將焦點強加到我的文本框中?

編輯:將正則表達式驗證器添加到代碼部分。

編輯:我發現這個問題有一個類似的問題,但我看不到解決方案。 在這一本書中,他正在使用html標簽。 我正在使用ASP標記,因此無法輕松更改輸入類型。

我最終通過檢查瀏覽器版本來進行解決。 如果是IE 10/11,則不會將文本添加到輸入字段中。

$(document).ready(function () {
    var lexidTbox = document.getElementById("<%=txtSeleID.ClientID%>");
    //workaround for IE10/11 issue
    var showLegalText = true;

// IF THE BROWSER IS IE10
if (navigator.appVersion.indexOf("MSIE 10") !== -1) {
    showLegalText = false;
}

// IF THE BROWSER IS IE11
if (navigator.userAgent.indexOf("Trident") !== -1 && navigator.userAgent.indexOf("rv:11") !== -1)
{
    showLegalText = false;
}

if (showLegalText) {
    if (lexidTbox.value.length == 0) {
        lexidTbox.className = "quickEnter";
        lexidTbox.value = "ID...";
    }
    if (lexidTbox.value == "ID...")
        lexidTbox.className = "quickEnter";
}

});

可以肯定的是,我不關心這種解決方法,因為它依賴於檢查IE版本,但這是我可以找到解決此問題的唯一方法。 這樣可以防止行Tbox.value = ""; 從運行,避免了我遇到的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM