2010-05-20 47 views
0

我在更新面板中有2個asp.net文本框。這兩個文本框控件都將一些JavaScript附加到自動標記欄,以便在下一個字段中僅允許數字輸入。當我在第一個字段中輸入一些數據並按下回車鍵時,焦點轉移到下一個字段,即使我剛進入該字段,第二個字段的requiredfieldvalidator也會顯示「* required」錯誤消息。當我第一次進入文本框時,如何防止驗證器發射?ASP.NET必需的字段驗證器在Firefox中的焦點上發射

我還應該提到兩個文本框都在gridview頁腳中。

下面的代碼:

<asp:TextBox ID="add_ISBN" runat="server" Columns="14" MaxLength="17" CssClass="focus" /> 
<asp:TextBox ID="add_Qty" runat="server" Columns="4" MaxLength="4" /> 
<asp:RequiredFieldValidator ID="rfvQty" ControlToValidate="add_Qty" ErrorMessage="* required" ForeColor="Red" Display="Dynamic" EnableClientScript="true" ValidationGroup="Add" runat="server" /> 

在代碼隱藏:

add_ISBN.Attributes.Add("onkeydown", "return isbnCheck(event, '" & add_Qty.ClientID & "')") 

和JavaScript:

function isbnCheck(e, id) { 
    e = e || window.event; 
    var key = e.which || e.keyCode 

    if (validIsbnChars.indexOf(parseInt(key, 10)) >= 0) { 
     return true; 
    } else { 
     if (key == 13) { 
      var nextfield = document.getElementById(id); 
      if (nextfield) nextfield.focus(); 
      return false; 
     } 
     if (e.preventDefault) e.preventDefault(); 
     e.returnValue = false; 
     return false; 
    } 
} 

JavaScript的只允許字符的有效子集,如果用戶按下輸入鍵,將焦點設置到下一個字段。

+0

您需要發佈一些標記和腳本,以便我們可以幫助您。 – 2010-05-20 15:55:08

回答

0

我試圖通過將javascript附加到onKeyPress事件而不是onKeydown來解決此問題。

add_ISBN.Attributes.Add("onkeydown", "return isbnCheck(event, '" & add_Qty.ClientID & "')") 
2

我不知道爲什麼這個錯誤正在發生,但您可以使用client-side validation mini-api創建解決方法。

查找頁面上的驗證器元素,執行document.getElementById(),然後在您選擇字段時將驗證器上的isvalid標誌設置爲true。

或者,您也可以撥打ValidatorEnable(validatorElement, false)在您處於現場時將其禁用,然後在您制定標籤時使用ValidatorEnable(validatorElement, true)重新啓用它。

+0

謝謝womp。如果事實證明沒有其他辦法,我可能會這樣做。 – 2010-05-20 16:48:30