不能同时使用2个javascript表单函数

时间:2018-10-12 10:39:13

标签: javascript forms alert

所以我用JavaScript制作了2个函数。一个功能是检查表单中是否填写了某些必填项。如果未填写必填项,我要页面说输入为空。

这是我用Java语言编写的功能:

const myFunc = (value: boolean): Promise<true | Error> => {
    return new Promise((resolve, reject) => {
        if (!value) {
            resolve(new Error("error msg"));
            return;
        }
        resolve(true);
    });
};

myFunc(true)
    .then(r =>  // r true | Error
    {
        if(r === true){
            r // r is true 
        }else{
            r.message // r is Error 
        }
    })

我还具有一个按钮功能,可以提醒用户发送表单的方式如下:

function checkform(form) {
            //Krijg all het input van de ingevulde form
            var inputs = form.getElementsByTagName('input');
            for (var i = 0; i < inputs.length; i++) {
                if(inputs[i].hasAttribute("required")){
                    if(inputs[i].value == ""){
                        // Als er een leegveld is meld deze alert code:
                        alert("Vul alle vereisten velden in");
                        return false;
                    }
                }
            }

            return true;
        }

现在的问题是,两者都可以工作,但不能同时工作。如果我删除了alertpopup函数,则当必填字段为空时,checkform函数确实起作用,但是当我使用alertpopup函数时,提交表单时仅弹出该弹出窗口,而checkform函数在以下情况下不显示任何消息:必填字段为空。

这是我的HTML表单:

function alertpopup()
        {
            alert("Uw email is verzonden! U krijgt binnen 24 uur bericht van ons.")
        }

那么,当用户单击“提交”按钮并且填写了所有必需的输入时,如何显示弹出窗口?

4 个答案:

答案 0 :(得分:1)

尝试创建另一个将整个行为包装为一个函数:

function checkFormAndAlert(form) {
   const formIsValid = checkform(form);
   if (formIsValid) {
     alertpopup();
   }
   // Here you can put 'else' conditions.
}

我还建议进行两项改进:混合职责是不好的(并且您的checkform函数内部包含alert。尝试对popupalert函数进行参数设置,以便您在内部传递警报,然后可以执行以下操作:

if (formIsValid) {
   alertpopup('Correct form message');
} else {
   alertpopup('Incorrect form message');
}

这应该可以帮助您,并且是一个不错的起点:)

答案 1 :(得分:0)

如果您想使alertpopup()调用空的输入,则可以在返回false之前调用它;否则,返回false。也是

function checkform(form) {
            //Krijg all het input van de ingevulde form
            var inputs = form.getElementsByTagName('input');
            for (var i = 0; i < inputs.length; i++) {
                if(inputs[i].hasAttribute("required")){
                    if(inputs[i].value == ""){
                        // Als er een leegveld is meld deze alert code:
                        alert("Vul alle vereisten velden in");

                        return false;
                    }
                }
            }
alertpopup();
            return true;

        }

答案 2 :(得分:0)

  

我还具有一个按钮功能,可以提醒用户发送表单的方式如下:

如果格式正确,只需将其放在最后的"lat":18.7323 "lon":73.1232 方法中。像这样:

onsubmit

答案 3 :(得分:0)

您可以像使用jQuery的提交功能

$( "#form" ).submit(function( event ) {
    var isvalid=checkform();
    if(!isvalid){
     alertpopup();
     event.preventDefault();
    } 
 });

jQuery文档link