Javascript 禁用在我按下单引号后,提交按钮不起作用
图片: 结果: 我有一个问题,提交按钮(回复按钮)是没有禁用后,我按'(单报价)或其中许多,我只想它被禁用。重点是防止有人在文本区域键入单引号/双引号或奇怪的字符。我这里有一个来自其他人的代码,它可以在不同的文件中进行测试,但是这里的条件不同,表单在ajax中,我对Jquery非常陌生,我不知道把代码放在哪里才能让它工作 这是我简单的ajax代码:Javascript 禁用在我按下单引号后,提交按钮不起作用,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,图片: 结果: 我有一个问题,提交按钮(回复按钮)是没有禁用后,我按'(单报价)或其中许多,我只想它被禁用。重点是防止有人在文本区域键入单引号/双引号或奇怪的字符。我这里有一个来自其他人的代码,它可以在不同的文件中进行测试,但是这里的条件不同,表单在ajax中,我对Jquery非常陌生,我不知道把代码放在哪里才能让它工作 这是我简单的ajax代码: var x; function clickreply(obj){ var varid = obj.id; var getnumb
var x;
function clickreply(obj){
var varid = obj.id;
var getnumb = varid.match(/\d/g); //get number from string
var idreply = 'idreply'+getnumb;
console.log(varid);
console.log(getnumb);
console.log(idreply);
$.ajax({
url: '/logincheckmember2.php', //This is the current doc
type: "POST",
dataType:'json', // add json datatype to get json
success :
function (result) {
x=result['ssloginmember'];
console.log(x);
if(result['ssloginmember']==null){
msgBLshow();
}else{
x="<center>"+
"<form method='post' name='myForm' id='myForm'>"+
"<textarea id='tareply' rows='4' cols='50' maxlength='250' placeholder='maxlength=250'></textarea><br>"+
"<input type='submit' id='submitreply' value='reply' onclick='clicktareply()'></input>"+
"</form>"+
"</center>";
document.getElementById("msgcontent1").innerHTML=x;
$("#msg1").fadeTo(1000, 1);
}
}
});
}
function clicktareply(){
alert(document.getElementById("tareply").value);
}
$(document).ready(function() {
$('#tareply').keyup(function() {
if(!$(this).val().match(/^(?!\s)([a-zA-Z0-9 _.)?&]){1,}$/g)) {
$('#submitreply').prop('disabled', true);
}else{
$('#submitreply').prop('disabled', false);
}
});
});
varx;
功能点击回复(obj){
var varid=对象id;
var getnumb=varid.match(//\d/g);//从字符串中获取数字
var idreply='idreply'+getnumb;
控制台日志(varid);
console.log(getnumb);
console.log(idreply);
$.ajax({
url:“/logincheckmember2.php”,//这是当前文档
类型:“POST”,
数据类型:'json',//添加json数据类型以获取json
成功:
功能(结果){
x=结果['ssloginmember'];
控制台日志(x);
如果(结果['ssloginmember']==null){
msgBLshow();
}否则{
x=“”+
""+
“
”+
""+
""+
"";
document.getElementById(“msgcontent1”).innerHTML=x;
$(#msg1”).fadeTo(1000,1);
}
}
});
}
函数clicktareply(){
警报(document.getElementById(“tareply”).value);
}
$(文档).ready(函数(){
$('#tareply').keyup(函数(){
if(!$(this.val().match(/^(?!\s)([a-zA-Z0-9_。)?&]){1,}$/g)){
$('submitreply').prop('disabled',true);
}否则{
$('submitreply').prop('disabled',false);
}
});
});
您必须使用keypress
而不是keyup
,因为您要防止单引号
$(document).ready(function() {
$('body').delegate('#tareply','keyup',function() {
//match condition ..do your logic here ..personally i use indexOf rather than regexp
if(!$(this).val().match(/^(?!\s)([a-zA-Z0-9 _.)?&]){1,}$/g)) {
$('#submitreply').prop('disabled', true);
}else{
$('#submitreply').prop('disabled', false);
}
});
});
JSFIDLE或类似的工具会很有帮助的好吧,我正在尝试。你可以在HTML页面的页眉中链接你的js文件,你可以在那里运行javascript。谢谢你Zorken17,它已经由@coolguy回答了。你帮了我很多。非常感谢Zorken17。但我还是说,如果按键不正确,请使用keyup insted。否则,您不会在每次操作中都得到正确的结果。这很有效,伙计,非常感谢@coolguy和+1,再次感谢。@coolguy我不知道您需要使用keypress来代替keyup,因为它只会延迟检查一个按键。这意味着,如果submitbutton是灰色的,并且您按了一个正确的键,则按钮仍将是灰色的,直到您按了另一个正确的键。它在我的awnser中工作得很好:keypress在keyup@zorken17之前被检查过这就是问题所在,就像keydown一样,当按键被按下时,它会做出反应。但是if语句检查的是inputbox值而不是键,因此,例如,如果在inputbox中设置了错误的字符,则submitbutton将变灰,并且当您删除所有内容并开始写入时,submitbutton将变灰,直到您点击第二个字符为止。因此,您的代码将无法按预期工作@coolguyI已经从“keypress keydown”(@coolguy suggestion)改为“keydup”,它也能工作。这对他们来说很有效,干得不错。