Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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
Php 如果表单字段为空,则删除单击处理程序_Php_Javascript_Jquery_Html_Mysql - Fatal编程技术网

Php 如果表单字段为空,则删除单击处理程序

Php 如果表单字段为空,则删除单击处理程序,php,javascript,jquery,html,mysql,Php,Javascript,Jquery,Html,Mysql,我有一些我想做的工作,但有一个问题:它执行我的btnSave功能为每一个输入元素的数量变化。这是我的密码: $('#base-stats').on('change', 'input', function(){ $('#btn-save').bind('click', btnSave); }); function btnSave(){ var valid = 1; character.currentChar.charName = $('#charName').val();

我有一些我想做的工作,但有一个问题:它执行我的btnSave功能为每一个输入元素的数量变化。这是我的密码:

$('#base-stats').on('change', 'input', function(){
    $('#btn-save').bind('click', btnSave);
});

function btnSave(){
    var valid = 1;
    character.currentChar.charName = $('#charName').val();
    character.currentChar.charLevel = $('#charLevel').val();
    character.currentChar.charLife = $('#charLife').val();
    character.currentChar.charES = $('#charES').val();
    character.currentChar.charInt = $('#charInt').val();
    character.currentChar.charStr = $('#charStr').val();
    character.currentChar.charDex = $('#charDex').val();

    $('#base-stats input').each(function(){
        if ($(this).val().length <= 0) {
            console.log('Null field found at '+$(this).attr('id'));
            $('#btn-save').unbind('click', btnSave);
            valid = 0;
        }
    });

    if (valid) {
        $.post('checkchar.php',
            {c:character.currentChar.charName},
            function(data){
                if (data == 'null') {
                    $.post('savechar.php',
                        {c:character.currentChar},
                        function(data){
                            alert('Character successfully saved to the database.');
                        }
                    );
                }
                else {
                    if (confirm('Duplicate character name exists in the database! Overwrite current character?')) {
                        $.post('savechar.php',
                            {c:character.currentChar},
                            function(data){
                                alert('Character successfully updated in the database.');
                            }
                        );
                    }
                }
            }
        );
    }
}
我如何防止这种情况发生,并确保没有空字段发布到我的服务器?或者我应该使用不同的方法,比如检查
savechar.php
文件中的空数组值?不过,我还是希望尽量减少与服务器的交互以节省时间。

您的btnSave()方法似乎很好。您的问题是,每次更改基本统计信息时,您都会将该方法绑定到#btn save的单击事件。你为什么那样做?您只需在开始时绑定它一次,然后只要单击#btn save,btnSave()就会运行,您的验证检查就会启动并执行您想要的操作。只需将脚本的顶部更改为(我将不必要的内容保留在那里,并将其注释掉,以便您可以看到):

Null field found at charLife global.js:80
Null field found at charES global.js:80
Null field found at charInt global.js:80
Null field found at charStr global.js:80
Null field found at charDex global.js:80
Null field found at charLife global.js:80
Null field found at charES global.js:80
Null field found at charInt global.js:80
Null field found at charStr global.js:80
Null field found at charDex global.js:80
$('#btn-save').click(btnSave);
/**$('#base-stats').on('change', 'input', function(){
    $('#btn-save').bind('click', btnSave);
});*/