Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用在我按下单引号后,提交按钮不起作用_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript 禁用在我按下单引号后,提交按钮不起作用

Javascript 禁用在我按下单引号后,提交按钮不起作用,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,图片: 结果: 我有一个问题,提交按钮(回复按钮)是没有禁用后,我按'(单报价)或其中许多,我只想它被禁用。重点是防止有人在文本区域键入单引号/双引号或奇怪的字符。我这里有一个来自其他人的代码,它可以在不同的文件中进行测试,但是这里的条件不同,表单在ajax中,我对Jquery非常陌生,我不知道把代码放在哪里才能让它工作 这是我简单的ajax代码: var x; function clickreply(obj){ var varid = obj.id; var getnumb

图片:

结果:

我有一个问题,提交按钮(回复按钮)是没有禁用后,我按'(单报价)或其中许多,我只想它被禁用。重点是防止有人在文本区域键入单引号/双引号或奇怪的字符。我这里有一个来自其他人的代码,它可以在不同的文件中进行测试,但是这里的条件不同,表单在ajax中,我对Jquery非常陌生,我不知道把代码放在哪里才能让它工作

这是我简单的ajax代码:

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”,它也能工作。这对他们来说很有效,干得不错。