Php 名称框中不允许使用特殊字符
我不希望我的用户使用诸如“!@$%^&*()\+”之类的字符注册他/她的名字。我应该如何使用jQuery和AJAX实现这一点 这是我的代码:Php 名称框中不允许使用特殊字符,php,jquery,ajax,Php,Jquery,Ajax,我不希望我的用户使用诸如“!@$%^&*()\+”之类的字符注册他/她的名字。我应该如何使用jQuery和AJAX实现这一点 这是我的代码: function registerDialog(){ var message = ''; if(loginBox != ''){ $.modal.close(); } var html = '<div>' +'<h4 style="background:
function registerDialog(){
var message = '';
if(loginBox != ''){
$.modal.close();
}
var html =
'<div>'
+'<h4 style="background:#DADEE7;padding:10px;border:1px solid #ccc;"><i class="fa fa-chevron-circle-right "></i> Register</h4>'
+'<input type="email" id="emailBox" placeholder="Email Address" style="width:90%; margin:10px auto 3px 10px;"/>'
+'<input type="password" id="passwordBox" placeholder="Password" style="width:90%; margin:10px auto 3px 10px;"/>'
+'<input type="text" id="realNameBox" style="width:90%;margin:10px auto 10px 10px;" placeholder="Complete Name."style="width:90%; margin:10px auto 3px 10px;" onkeypress="return restrictCharacters(this, event, alphaOnly);" />'
+'<p id="infoBox" style="width:90%;margin-left:10px;margin-bottom:5px;"></p>'
+'<p id="infoBox2" style="width:90%;margin-left:10px;margin-bottom:5px;"></p>'
+'<p style="text-align:right;">'
+'<button style="padding:5px;margin-right:5px;" id="signUpBtn">Submit</button>'
+'<button style="padding:5px;margin-right:20px;" id="cancelBtn">Cancel</button>'
+'</p>'
+'</div>'
registerBox = $.modal(html, {
closeHTML:"",
containerCss:{
backgroundColor:"#fff",
borderColor:"#fff",
minHeight: 250,
width: ($(window).width() > 320)? 320 : $(window).width() - 10,
padding:0
},
overlayClose:true,
opacity:80,
overlayCss: {
backgroundColor:"#000"
},
onShow : function (dialog) {
$("#signUpBtn",dialog.data).click(function(){
var email = $('#emailBox').val();
var passwordBox = $('#passwordBox').val();
var realNameBox = $('#realNameBox').val();
if(email != '' && passwordBox != '' && realNameBox != '' && validateEmail(email) && filterName(realNameBox)){
$.ajax({
type : 'get',
async : false,
url: baseUrl+'/Index/register',
data:{
email : email,
password: passwordBox,
realname: realNameBox
},
error: function(req,error){
console.log(req.statusText);
},
dataType: 'json',
cache: false,
success : function(msg){
if(msg.status == "OK"){
message = 'Successfully Registered.';
alert(message);
window.location.reload();
}else{
message = 'Registration failed, Email address already used.';
$('#infoBox').html(message).css('color', 'red');
return false;
}
}
});
}else{
if(email == ''){$('#emailBox').addClass('border-red');}else{$('#emailBox').removeClass('border-red');}
if(passwordBox == ''){$('#passwordBox').addClass('border-red');}else{$('#passwordBox').removeClass('border-red');}
if(realNameBox == ''){$('#realNameBox').addClass('border-red');}else{$('#realNameBox').removeClass('border-red');}
$('#infoBox').html('Please complete or correct the fields above marked in red.');
if(validateEmail(email) == false){
$('#emailBox').addClass('border-red');
}else{
$('#emailBox').removeClass('border-red');
}
return false;
}
});
$('#realNameBox').keypress(function(e){
if (e.which == 13) {
$("#signUpBtn",dialog.data).click();
}
});
$("#cancelBtn",dialog.data).click(function(){
var email = $('#emailBox').val('');
var passwordBox = $('#passwordBox').val('');
$.modal.close();
});
},
onOpen: function (dialog) {
dialog.overlay.fadeIn('fast', function () {
dialog.data.hide();
dialog.container.fadeIn('fast', function () {
dialog.data.slideDown('fast');
});
});
},
onClose: function (dialog) {
dialog.data.fadeOut('fast', function () {
dialog.overlay.slideUp('fast', function () {
$.modal.close();
});
});
}
});
}
函数寄存器dialog(){
var消息=“”;
如果(登录框!=''){
$.modal.close();
}
变量html=
''
+“注册”
+''
+''
+''
+“”
+“”
+“”
+“提交”
+“取消”
+“
”
+''
registerBox=$.modal(html{
关闭HTML:“”,
集装箱船:{
背景颜色:“fff”,
边框颜色:“fff”,
身高:250,
宽度:($(窗口).width()>320)?320:$(窗口).width()-10,
填充:0
},
是的,
不透明度:80,
覆盖层:{
背景颜色:“000”
},
onShow:函数(对话框){
$(“#signUpBtn”,dialog.data)。单击(函数(){
var email=$('#emailBox').val();
var passwordBox=$('#passwordBox').val();
var realNameBox=$('#realNameBox').val();
如果(电子邮件!=''&&passwordBox!=''&&realNameBox!=''&&validateEmail(电子邮件)&&filterName(realNameBox)){
$.ajax({
键入:“get”,
async:false,
url:baseUrl+'/Index/register',
数据:{
电邮:电邮,,
密码:passwordBox,
realname:realNameBox
},
错误:函数(请求,错误){
控制台日志(请求状态文本);
},
数据类型:“json”,
cache:false,
成功:函数(msg){
如果(msg.status==“OK”){
消息='已成功注册';
警报(信息);
window.location.reload();
}否则{
消息='注册失败,电子邮件地址已被使用';
$('#infoBox').html(message.css('color','red');
返回false;
}
}
});
}否则{
if(email=''){$('#emailBox').addClass('border-red');}else{$('#emailBox').removeClass('border-red');}
if(passwordBox=''){$('#passwordBox').addClass('border-red');}else{$('#passwordBox').removeClass('border-red');}
if(realNameBox=''){$('#realNameBox').addClass('border-red');}else{$('#realNameBox').removeClass('border-red');}
$(“#信息框”).html('请填写或更正上面用红色标记的字段');
if(validateEmail(email)==false){
$('#emailBox').addClass('border-red');
}否则{
$(“#emailBox”).removeClass('border-red');
}
返回false;
}
});
$('#realNameBox')。按键(函数(e){
如果(e.which==13){
$(“#signUpBtn”,dialog.data)。单击();
}
});
$(“#取消BTN”,dialog.data)。单击(函数(){
var email=$('#emailBox').val('');
var passwordBox=$('#passwordBox').val('';
$.modal.close();
});
},
onOpen:函数(对话框){
dialog.overlay.fadeIn('fast',function(){
dialog.data.hide();
dialog.container.fadeIn('fast',function(){
dialog.data.slideDown('fast');
});
});
},
onClose:函数(对话框){
dialog.data.fadeOut('fast',function(){
dialog.overlay.slideUp('fast',function(){
$.modal.close();
});
});
}
});
}
我尝试输入一些代码来限制文本框接受特殊字符,但它似乎不起作用。正则表达式可能是一种方法:
var isNameValid=/[!@#$%^&*()+]/.test(realNameBox)代码>
正如ljacqu在您的问题评论中所建议的,确保您也验证了服务器端。最好的方法是使用常规表达式:
function isValid(str){
return !/[!@#$%^&*()_+]/.test(str);
}
如果表达式不包含任何这些字符,则函数将返回true
正如评论中所建议的,请确保在php中执行相同的操作。您可以使用相同的原则和使用注册表。php中的表达式,即:
function isValid($str) {
if (preg_match("/[!@#$%^&*()_+]/", $str)) return false;
return true;
}
借用上面Valentin Jacquemin的正则表达式方法并使用jQuery:
$(function(){
$('input, textarea').keyup( function(){
var inputs = $(this).val();
$(this).val(inputs.replace(/[^a-z0-9\s]/gi, ''));
});
});
替换所有非字母数字字符。值得思考的是:无论客户端有什么限制,也要确保在服务器端强制执行这些限制。仅仅因为你不允许我用JavaScript向你的服务器发送内容并不意味着我不能用其他方式向你的服务器发送。你是什么意思@ljacquIt与你的问题没有直接关系。如果您要将此数据发送到您的某个页面,请使用s