2013-04-11 57 views
0

使用webmatrix,asp.net構建註冊表單使用Javascript,sql server CE。我正在爲用戶名文本框編寫一個onblur事件。當焦點離開文本框時,它會檢查數據庫中是否存在現有用戶名,如果是,則顯示標籤。代碼不起作用,因爲如果在「@ {}」塊內部忽略js代碼。它在「@ {}」塊之外工作正常,但是我不能在那裏給出條件。請幫助我。用於onblur事件的Javascript

<html> 
<head> 
<script> 
function RegUsernameLeave() 
{ 
    @{ 
    regusername=Request.Form["regusername"]; 
    if(!regusername.IsEmpty()) 
     { 
     var db = Database.Open("myshop"); 
     int usercount = db.QueryValue("select count(*) from webusers where [email protected]",regusername); 
     db.Close(); 
     if(usercount!=0){ 
     document.getElementById("msg").innerHTML="Username already exists";} 
     } 
    } 
} 
</script> 
</head> 
<body> 
<label>Username:</label> 
<p><input type="text" id="regusername" onblur="RegUsernameLeave()"/> 
<label id="msg"></label></p> 
</body> 
</html> 

回答

0

我在黑暗中完全刺穿這裏......但也許沿着這些線?

基本上 - 我假設任何@ {}打印出來的JS - 所以如果我們可以執行服務器端代碼,並輸出它等於您的JS變量userCount那麼你可以使用該JS變量做你的檢查並輸出錯誤信息(如有必要)

@functions{ 
    public int GetUserCount() { 
    string regusername = Request.Form["regusername"].ToString(); 
    if(!regusername.IsEmpty()) 
     { 
     var db = Database.Open("myshop"); 
     int usercount = db.QueryValue("select count(*) from webusers where username='@0'",regusername); 
     db.Close(); 
     return usercount; 
     } 
     return 0; 
    } 
} 

function RegUsernameLeave() 
{ 
    var userCount = @GetUserCount(); 

    if (userCount > 0) 
    document.getElementById("msg").innerHTML="Username already exists"; 

} 
+0

謝謝Loren.Great Idea。但它在「返回用戶數」上出錯;說:「因爲'ASP._Page_test_cshtml.Execute()'返回void,所以返回關鍵字不能跟一個對象表達式。」 – Ruby 2013-04-13 17:23:58

+0

嘿,哥們,我做了一些修改,我相信我越來越接近 – 99823 2013-04-14 15:27:10

+0

是的。我想你是。但沒有運氣:(它沒有認出'regusername'所以我添加了'var' - 「var regusername = Request.Form [」regusername「];」所以,現在沒有錯誤,但警告沒有出現,所以,我想也許我沒有觸發onb​​lur,我通過 「var userCount = 1; if(userCount> 0){this this .....}。」確認了這一點,它工作的很好,我在哪裏出錯了? – Ruby 2013-04-15 13:21:19