微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么一种方法有效而另一种方法无效?

如何解决为什么一种方法有效而另一种方法无效?

我有以下代码

if(chk) {
        document.getElementById(messageBox).innerHTML="update do be done";
        document.getElementById(messageBox).style.color="green"; 

        } else {
            document.getElementById(messageBox).innerHTML="no update";
        document.getElementById(messageBox).style.color="red"; 
        };  
});

chk 是一个来自这里的变量:

var chk = ((lenta >= 1) && (lenta <= 5) && (str.search(/[0-9¬!\"£\$%^\&\*\(\)_\-+\=\{\}\[\]#~@\';\:\/\?>\.<\,\\\ |]/) <= -1));

基本上,如果 chk 为真,则表示输入正确。 在这种情况下,输入只允许输入 1 到 5 之间的字母和长度。

脚本工作正常,但如果不是“

document.getElementById(messageBox).innerHTML="update do be done";
        document.getElementById(messageBox).style.color="green";

”我补充说 "

$.ajax({
        type: 'POST',data: ({quoteprefix : str}),url: 'liveupdate/firstsetup.PHP',success: function(data) {
            document.getElementById(messageBox).innerHTML=" <?PHP echo pw('updatedone'); ?>. "+data+"";
            document.getElementById(messageBox).style.color="green";
        } 
    });
"

无论输入的值如何,脚本都会更新 示例:如果我输入 AB,它会更新 AB。 如果我输入 AB123,它会更新“AB”

完整的脚本在这里

$(document).ready(function() {

var ffind = "#quoteprefix"; //input value id
$(ffind).on("change paste keyup",function() {
    var messageBox = "qquoteprefix"; //message Box
    var lenta = $(this).val().length;
    var str = $(this).val();

    var chk = ((lenta >= 1) && (lenta <= 5) && (str.search(/[0-9¬!\"£\$%^\&\*\(\)_\-+\=\{\}\[\]#~@\';\:\/\?>\.<\,\\\ |]/) <= -1));
    
    if (chk) {
        $(this).removeClass("is-invalid");
        $(this).addClass("is-valid");
    } else {
        $(this).removeClass("is-valid");
        $(this).addClass("is-invalid");
    };
    


}); 

$(ffind).on("focusout",function() {
    
if(chk) {
        document.getElementById(messageBox).innerHTML="update de facut";
        document.getElementById(messageBox).style.color="green"; 

        } else {
            document.getElementById(messageBox).innerHTML="nu face update" +chk;
        document.getElementById(messageBox).style.color="red"; 
        };  
});




});

更新: 试过了,同样的结果:

$(document).ready(function() {

var ffind = "#quoteprefix"; 
$(ffind).on("change paste keyup",function() {
    var messageBox = "qquoteprefix";
    var lenta = $(this).val().length;
    var str = $(this).val();
    var chk=false;
    var chk = ((lenta >= 1) && (lenta <= 5) && (str.search(/[0-9¬!\"£\$%^\&\*\(\)_\-+\=\{\}\[\]#~@\';\:\/\?>\.<\,\\\ |]/) <= -1));
    
    if (chk) {
        $(this).removeClass("is-invalid");
        $(this).addClass("is-valid");

        $(this).focusout( function() {
            $.ajax({
                type: 'POST',data: ({quoteprefix : $(this).val()}),success: function(data) {
                    document.getElementById(messageBox).innerHTML=" <?PHP echo pw('updatedone'); ?>."+chk;
                    document.getElementById(messageBox).style.color="green";
                } 
            });
        });

    } else {
        $(this).removeClass("is-valid");
        $(this).addClass("is-invalid");
    };
    

}); 


});

为什么? 有人可以帮我吗

解决方法

所以,我发现这个工作:

$(document).ready(function() {

var ffind = "#<?php echo $field; ?>"; 
var messagebox = "<?php echo $field[0].$field; ?>";
$(ffind).on("change paste keyup",function() {
    var notallowedchars = /[0-9¬!\"£\$%^\&\*\(\)_\-+\=\{\}\[\]#~@\';\:\/\?>\.<\,\\\ |]/;
    
    var chk = (($(this).val().length >= 1) && 
              ($(this).val().length <= 5) && 
              ($(this).val().search(notallowedchars) <= -1));
    
    if (chk) {
        $(this).removeClass("is-invalid");
        $(this).addClass("is-valid");
    } else {
        $(this).removeClass("is-valid");
        $(this).addClass("is-invalid");
    };
    
$(this).focusout( function() {
    var chk = (($(this).val().length >= 1) && 
              ($(this).val().length <= 5) && 
              ($(this).val().search(notallowedchars) <= -1));
    if (chk) {
            $.ajax({
                type: 'POST',data: ({quoteprefix : $(this).val()}),url: 'liveupdate/firstsetup.php',success: function(data) {
                    document.getElementById(messagebox).innerHTML=" <?php echo pw('updatedone'); ?>.";
                    document.getElementById(messagebox).style.color="green";
                } 
            });
    } else {
        document.getElementById(messagebox).innerHTML="<?php echo pw('noupdatedone'); ?>";
        document.getElementById(messagebox).style.color="red";
    }
}); 

}); 

});

显然在“focusout”函数中,我需要再次进行所有检查。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?