2013-05-13 30 views
0

對不起,如果標題不解釋太多。有數據庫調用時調用驗證Jscript函數的正確方法是什麼?

我有一個帶有文本框,按鈕和錯誤消息的頁面。

我需要驗證在我的文本框中輸入的文本是否爲空或空,具有良好的長度,沒有奇怪的字符和最後但並非最不重要的用戶名不存在於我的數據庫。該部分已完成並正在工作。

我的問題是,什麼是最好的方式來調用我的Jscript函數,驗證用戶名是類型的asp:文本框。

現在我看到3種不同的方式。

  1. 使用.blur叫它當焦點在文本框

  2. 失去使用.keyup或者只要按下一個鍵

  3. 使用定時器來驗證每個.keydown叫它X秒

現在與.blur的問題是,它不驗證沒有失去專注於唯一值得關注的頁面上的事情。 .keyup和.keydown的問題是它會多次調用我的數據庫方式。而定時器的問題是我不確定定時器是否有問題,這就是爲什麼我要問。

我也有一個驗證服務器端,所以它不能通過。

欲瞭解更多信息,這裏的jscript與.blur我現在有。

<script type="text/javascript"> 
var Name; 
var NameValid = false; 

$(document).ready(function() { 
    Name = $("#txtBox"); 
    validateName(); 
    Name.blur(function() { 
     validateName(); 
    }); 

}); 

function validateName() { 
    NameValid = false; 
    PageMethods.NameValidMethod(Name.val(), successName, error); 
}; 

什麼是最好的辦法呢?

編輯:添加更多信息。現在我的頁面只是一個文本框和一個按鈕。在將來,當我更新我的網站時,我會在頁面上添加一個文本框。

回答

2

對於簡式表單,最好的用戶體驗是在提交表單時執行驗證。你是否完全反對有一個按鈕和/或依靠用戶點擊'輸入'鍵?

然後下面的驗證將使用JavaScript來完成對提交表單的:「如果我在文本框中輸入文本不爲空或空,具有良好的長度,即在它裏面沒有任何奇怪的字符」

然後,如果所有這些都通過,您將繼續提交給服務器以檢查用戶名的唯一性。

+0

事情是,我寧願用戶不必按任何按鈕,也不使用回車鍵來驗證。只要名稱無效,我想禁用我的提交按鈕。但是現在我想到了這一點,我意識到通過調用數據庫並不適合。所以我的猜測是我應該在我的文本框旁邊放一個「檢查可用性」以驗證它以及使用.blur或.change – snaplemouton 2013-05-13 18:38:13

+0

這種妥協似乎是公平的。我建議使用Javascript進行驗證的第一步,就像您對模糊或更改所做的建議一樣,然後只需點擊新添加的按鈕即可進入數據庫進行唯一性檢查。 – JacobMcLock 2013-05-13 18:44:04

+0

這正是我要做的。謝謝。 :) – snaplemouton 2013-05-13 18:45:04

1

你看過.submit()函數嗎?它只是叫你提交表單,並genearaly用於驗證形式的案前:

你可以這樣調用:

$('form').on('submit',function(data){ 
    //Validate the users info. 
    //if not valid call e.preventDefault(); 
}); 

API:http://api.jquery.com/submit/

如果你想要去的道路上驗證每個字段(享受IMO),您可以使用這就是所謂的change() jQuery函數當有些變化:

$('input..').on('change',function(){ 
    //That input has changed, validate it now. 
}); 

AP I:http://api.jquery.com/change/

+0

.change將在提交時得到與.blur(焦點丟失)相同的結果,請參閱我對JacobMcLock答案的評論。 – snaplemouton 2013-05-13 18:39:04

0

在我的建議中,您選擇了正確的方式來處理客戶端驗證。基於時間的驗證似乎不是一個好主意,它也不是很實用。

+0

這就是我告訴自己一個計時器。 – snaplemouton 2013-05-13 18:39:26

相關問題