这是我的代码。
的.js
$(document).ready(function() {
$("#username").focusout(function() {
$.ajax({
type:'post',
url:site_url()+'/client/checkUserName',
data:{'username':$("#username").val()},
dataType:'json',
success:function(result){
if(result != 'false'){
$('#message').text('Username exists');
}
}
});
});
html的
<form id='form1' method="post">
<input type="text" name="username" id="username"/>
<span id="message" style="color:red"></span>
<input type="submit" value="submit" id="regis" class="btn"/>
</form>
它在焦点上工作得很好。 如果用户名存在,如何使表单不提交?
假设表格中有隐藏字段,请说
<input type="text" hidden id="type" value="<?php echo $type;?>">
然后,如果隐藏字段中存在值,则无需检查用户名是否已存在。
答案 0 :(得分:0)
如果您只检查javascript中是否存在用户名,则您的网站将不安全。黑客无需实际点击按钮或执行客户端代码即可进行提交。
这意味着当提交已经发生时,您需要在服务器端检查用户名是否存在。在这种情况下,javascript检查没有太大的收获。
您也不希望为黑客提供一种方法来检查哪些用户名存在,哪些用户名不存在。如果您在提交后进行检查,则黑客不知道用户名是否无效,或者密码是否错误。
编辑:到目前为止,@КонстантинРекунов提供了唯一可能有效的JavaScript。但是,请参阅我在回答中关于解决方案脆弱性的评论。任何像这样的解决方案本质上都是脆弱的。做这样的事情的唯一合理理由是在注册过程中建议替代方案。即便如此,也是不好的做法。我建议你改变你的设计。
答案 1 :(得分:0)
您只需停用提交按钮
即可$(document).ready(function() {
$("#username").focusout(function() {
$.ajax({
type:'post',
url:site_url()+'/client/checkUserName',
data:{'username':$("#username").val()},
dataType:'json',
success:function(result){
if(result != 'false'){
$('#message').text('Username exists');
$('#regis').attr('disabled','disabled');
} else {
$('#regis').removeAttr('disabled');
}
}
});
});
答案 2 :(得分:0)
您可能需要将js代码放入函数中,并在检查失败时添加:return false;
,然后添加onsubmit = "[functionName]";
。
答案 3 :(得分:0)
你应该添加return false,以及你调用函数的地方
if(result != 'false'){
$('#message').text('Username exists');
return true;
}
else
{
return false;
}