2013-04-11 1 views
0

Создание регистрационной формы с использованием webmatrix, asp.net & Javascript, sql server CE. Я пишу событие onblur для текстового поля Username. Когда фокус покидает текстовое поле, он проверяет, существует ли существующее имя пользователя в базе данных и отображается метка, если да. код не работает, поскольку код js игнорируется, если внутри блока «@ {}». Он отлично работает за пределами блока «@ {}», но тогда я не могу дать условие. Пожалуйста, помогите мне.Javascript для события onblur

<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

Thank you Loren.Great Idea. Но он ошибся в «return usercount»; говоря: «Поскольку« ASP._Page_test_cshtml.Execute() »возвращает void, ключевое слово return не должно сопровождаться выражением объекта». – Ruby

+0

Эй, приятель, я сделал некоторые изменения, я считаю, что приближаюсь – 99823

+0

Да. Думаю, что да. Но не повезло :(Это не было распознавание «regusername», поэтому я добавил «var» - «var regusername = Request.Form [« regusername »]». Итак, никаких ошибок сейчас, но предупреждение не появилось. нажатие клавиши Tab не запускало onblur. Я подтвердил это с помощью «var userCount = 1, if (userCount> 0) {сделайте это .....}. Это сработало. Где я ошибаюсь? – Ruby