Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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_Forms - Fatal编程技术网

Javascript 提交时停止表单刷新页面

Javascript 提交时停止表单刷新页面,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,如果在字段中没有任何数据的情况下按send按钮,如何防止页面刷新 验证设置工作正常,所有字段变为红色,但随后页面立即刷新。我对JS的了解比较基础 我特别认为底部的processForm()函数是“坏的” HTML <form id="prospects_form" method="post"> <input id="form_name" tabindex="1" class="boxsize" type="text" name="name" placeholder="F

如果在字段中没有任何数据的情况下按send按钮,如何防止页面刷新

验证设置工作正常,所有字段变为红色,但随后页面立即刷新。我对JS的了解比较基础

我特别认为底部的
processForm()
函数是“坏的”

HTML

<form id="prospects_form" method="post">
    <input id="form_name" tabindex="1" class="boxsize" type="text" name="name" placeholder="Full name*" maxlength="80" value="" />
    <input id="form_email" tabindex="2" class="boxsize" type="text" name="email" placeholder="Email*" maxlength="100" value="" />
    <input id="form_subject" class="boxsize" type="text" name="subject" placeholder="Subject*" maxlength="50" value="FORM: Row for OUBC" />
    <textarea id="form_message" class="boxsize" name="message" placeholder="Message*" tabindex="3" rows="6" cols="5" maxlength="500"></textarea>

    <button id="form_send" tabindex="5" class="btn" type="submit" onclick="return processForm()">Send</button>
    <div id="form_validation">
        <span class="form_captcha_code"></span>
        <input id="form_captcha" class="boxsize" type="text" name="form_captcha" placeholder="Enter code" tabindex="4" value="" />
    </div>
    <div class="clearfix"></div>
</form>

发送
JS

$(document).ready(function() { 

// Add active class to inputs
$("#prospects_form .boxsize").focus(function() { $(this).addClass("hasText"); });
$("#form_validation .boxsize").focus(function() { $(this).parent().addClass("hasText"); });
// Remove active class from inputs (if empty)
$("#prospects_form .boxsize").blur(function() { if ( this.value === "") { $(this).removeClass("hasText"); } });
$("#form_validation .boxsize").blur(function() { if ( this.value === "") { $(this).parent().removeClass("hasText"); } });



///////////////////
// START VALIDATION
$("#prospects_form").ready(function() {

    // DEFINE GLOBAL VARIABLES
    var valName = $('#form_name'),
        valEmail = $("#form_email"),
        valEmailFormat = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
        valMsg = $('#form_message'),
        valCaptcha = $('#form_captcha'),
        valCaptchaCode = $('.form_captcha_code');



    // Generate captcha
    function randomgen() {
        var rannumber = "";
        // Iterate through 1 to 9, 4 times
        for(ranNum=1; ranNum<=4; ranNum++){ rannumber+=Math.floor(Math.random()*10).toString(); }
        // Apply captcha to element
        valCaptchaCode.html(rannumber);
    }
    randomgen();


    // CAPTCHA VALIDATION
    valCaptcha.blur(function() {
        function formCaptcha() {
            if ( valCaptcha.val() == valCaptchaCode.html() ) {
                // Incorrect
                valCaptcha.parent().addClass("invalid");
                return false;
            } else {
                // Correct
                valCaptcha.parent().removeClass("invalid");
                return true;
            }
        }
        formCaptcha();
    });

    // Remove invalid class from captcha if typing
    valCaptcha.keypress(function() {
        valCaptcha.parent().removeClass("invalid");
    });


    // EMAIL VALIDATION (BLUR)
    valEmail.blur(function() {
        function formEmail() {
            if (!valEmailFormat.test(valEmail.val()) && valEmail.val() !== "" ) {
                // Incorrect
                valEmail.addClass("invalid");
            } else {
                // Correct
                valEmail.removeClass("invalid");
            }
        }
        formEmail();
    });

    // Remove invalid class from email if typing
    valEmail.keypress(function() {
        valEmail.removeClass("invalid");
    });


    // VALIDATION ON SUBMIT
    $('#prospects_form').submit(function() {
        console.log('user hit send button');

        // EMAIL VALIDATION (SUBMIT)
        function formEmailSubmit() {
            if (!valEmailFormat.test(valEmail.val())) {
                // Incorrect
                valEmail.addClass("invalid");
            } else {
                // Correct
                valEmail.removeClass("invalid");
            }
        }
        formEmailSubmit();

        // Validate captcha
        function formCaptchaSubmit() {
            if( valCaptcha.val() === valCaptchaCode.html() ) {
                // Captcha is correct
            } else {
                // Captcha is incorrect
                valCaptcha.parent().addClass("invalid");
                randomgen();
            }
        }
        formCaptchaSubmit();


        // If NAME field is empty
        function formNameSubmit() {
            if ( valName.val() === "" ) {
                // Name is empty
                valName.addClass("invalid");
            } else {
                valName.removeClass("invalid");
            }
        }
        formNameSubmit();


        // If MESSAGE field is empty
        function formMessageSubmit() {
            if ( valMsg.val() === "" ) {
                // Name is empty
                valMsg.addClass("invalid");
            } else {
                valMsg.removeClass("invalid");
            }
        }
        formMessageSubmit();


        // Submit form (if all good)
        function processForm() {
            if ( formEmailSubmit() && formCaptchaSubmit() && formNameSubmit() && formMessageSubmit() ) {
                $("#prospects_form").attr("action", "/clients/oubc/row-for-oubc-send.php");
                $("#form_send").attr("type", "submit");
                return true;
            } else if( !formEmailSubmit() ) {
                valEmail.addClass("invalid");
                return false;
            } else if ( !formCaptchaSubmit() ) {
                valCaptcha.parent().addClass("invalid");
                return false;
            } else if ( !formNameSubmit() ) {
                valName.addClass("invalid");
                    return false;
                } else if ( !formMessageSubmit() ) {
                    valMsg.addClass("invalid");
                    return false;
                } else {
                    return false;
                }
            }
        });
    });
    // END VALIDATION
    /////////////////
});
$(文档).ready(函数(){
//将活动类添加到输入
$(“#prospects_form.boxsize”).focus(function(){$(this.addClass(“hasText”);});
$(“#form_validation.boxsize”).focus(function(){$(this.parent().addClass(“hasText”);});
//从输入中删除活动类(如果为空)
$(“#prospects_form.boxsize”).blur(函数(){if(this.value==”){$(this.removeClass(“hasText”);});
$(“#form_validation.boxsize”).blur(函数(){if(this.value==”){$(this.parent().removeClass(“hasText”);});
///////////////////
//开始验证
$(“#prospects_form”).ready(函数(){
//定义全局变量
var valName=$(“#form_name”),
valEmail=$(“表格电子邮件”),
valEmailFormat=/^([^()[\]\\,;:\s@\“]+(\.[^()[\]\,;:\s@\“]+)*(\“+\”)((\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}])){124;([a-zA Z-0-9]+-zA 0-9].[a-2}.-/,
valMsg=$(“#形式#消息”),
valCaptcha=$(“#格式_captcha”),
valCaptchaCode=$('.form_captcha_code');
//生成验证码
函数randomgen(){
var rannumber=“”;
//迭代1到9,4次

对于(ranNum=1;ranNum您可以阻止表单随

$("#prospects_form").submit(function(e) {
    e.preventDefault();
});
当然,在函数中,您可以检查空字段,如果有任何不正确的地方,
e.preventDefault()
将停止提交

没有jQuery:

var form = document.getElementById("myForm");
function handleForm(event) { event.preventDefault(); } 
form.addEventListener('submit', handleForm);

您可以阻止表单随一起提交

$("#prospects_form").submit(function(e) {
    e.preventDefault();
});
当然,在函数中,您可以检查空字段,如果有任何不正确的地方,
e.preventDefault()
将停止提交

没有jQuery:

var form = document.getElementById("myForm");
function handleForm(event) { event.preventDefault(); } 
form.addEventListener('submit', handleForm);

将按钮类型替换为
按钮

<button type="button">My Cool Button</button>
我的酷按钮

将按钮类型替换为
按钮

<button type="button">My Cool Button</button>
我的酷按钮

我个人喜欢在提交时验证表单,如果有错误,只需返回false即可

$('form').submit(function() {

    var error;

   if ( !$('input').val() ) {
        error = true
    }

    if (error) {
         alert('there are errors')
         return false
    }

});

我个人喜欢在提交时验证表单,如果有错误,只需返回false即可

$('form').submit(function() {

    var error;

   if ( !$('input').val() ) {
        error = true
    }

    if (error) {
         alert('there are errors')
         return false
    }

});

大多数人会通过调用函数来阻止表单提交

另一种方法是删除按钮的onclick属性,并将
processForm()
中的代码输出到
中。submit(function(){
作为
返回false;
导致表单不提交。另外,使
formBlaSubmit()
函数基于有效性返回布尔值,以便在
processForm();

katsh的答案是一样的,只是更容易理解


(顺便说一句,我是stackoverflow新手,请给我一些指导。)

大多数人都会通过调用函数来阻止表单提交

另一种方法是删除按钮的onclick属性,并将
processForm()
中的代码输出到
中。submit(function(){
作为
返回false;
导致表单不提交。另外,使
formBlaSubmit()
函数基于有效性返回布尔值,以便在
processForm();

katsh的答案是一样的,只是更容易理解


(顺便说一句,我是stackoverflow的新手,请给我一些指导。)

您可以在不刷新页面的情况下使用此代码提交表单。我在我的项目中已经这样做了

$(function () {
    $('#myFormName').on('submit',function (e) {

              $.ajax({
                type: 'post',
                url: 'myPageName.php',
                data: $('#myFormName').serialize(),
                success: function () {
                 alert("Email has been sent!");
                }
              });
          e.preventDefault();
        });
});

您可以在不刷新页面的情况下使用此代码提交表单。我在我的项目中已经这样做了

$(function () {
    $('#myFormName').on('submit',function (e) {

              $.ajax({
                type: 'post',
                url: 'myPageName.php',
                data: $('#myFormName').serialize(),
                success: function () {
                 alert("Email has been sent!");
                }
              });
          e.preventDefault();
        });
});
添加以下onsubmit=“return false”代码:


这为我解决了问题。它仍将运行您指定的onClick函数添加以下onsubmit=“return false”代码:



这为我解决了这个问题。它仍然会运行您指定的onClick函数

函数验证()
{
var username=document.getElementById('username')。值;
如果(用户名==“”)
{
返回false;
}

如果(username.length只需按如下方式输入返回值:

函数验证()
{
var username=document.getElementById('username')。值;
如果(用户名==“”)
{
返回false;
}

如果(username.length当您为用户提供2种提交表单的可能性时,此问题变得更加复杂:

  • 通过点击一个特别的按钮
  • 按回车键
  • 在这种情况下,您将需要一个功能来检测按下的键,如果按下Enter键,您将在其中提交表单

    现在IE出现了问题(在任何情况下都是版本11) 备注: Chrome和FireFox都不存在此问题

    • 单击“提交”按钮时,表单将提交一次;很好
    • 当您点击Enter键时,表单将提交两次…并且您的servlet将执行两次。如果您没有PRG(post redirect get)体系结构服务器端,那么结果可能会出乎意料
    尽管这个解决方案看起来很琐碎,但我花了很多时间来解决这个问题,所以我希望它对其他人有用。 该解决方案已在IE(v11.0.9600.18426)、FF(v40.03)和Chrome(v53.02785.143m64位)上成功测试

    源代码HTML和js在代码段中。原理在这里描述。 警告:

    无法在代码段中测试它,因为post操作不可用 定义并按Enter键可能会干扰stackoverflow

    如果您面临这个问题,那么只需将js代码复制/粘贴到您的环境中,并根据您的上下文进行调整

    /*
    *通知表格中的要点
    */
    var inForm=document.getElementById('
    
    ajax_form('form',
    {
        before: function()
        {
            alert('submiting form');
            // if return false form shouldn't be submitted
        },
        success:function(data)
        {
            console.log(data)
        }
    }
    )[0].submit();
    
     $("#buttonID").click(function (e) {
              e.preventDefault();
             //some logic here
     }
    
    <select id="youId" name="yourName">
    <select> 
    <option value="1</option>
    <option value="2</option>
    <option value="3</option>
    </select>
    <input id="formStockVal1" type="number"><br><br>
    <form> 
    <button type="reset" id="stockCancel">Cancel</button>
    <button type="reset" id="stockConfirm">Add</button>
    </form>
    
    
    <form action="#" onsubmit="yourJsFunction();return false">
        <input type="text"/>
        <input type="submit"/>
    </form>
    
    onsubmit="xxx_xxx(); return false;"
    
    $("#prospects_form").submit(function(e) {
        e.preventDefault();
    });
    
    <form id="prospects_form" method="post">
        <input id="form_name" tabindex="1" class="boxsize" type="text" name="name" placeholder="Full name*" maxlength="80" value="" required/>
        <input id="form_email" tabindex="2" class="boxsize" type="text" name="email" placeholder="Email*" maxlength="100" value="" required/>
        <input id="form_subject" class="boxsize" type="text" name="subject" placeholder="Subject*" maxlength="50" value="FORM: Row for OUBC" required/>
        <textarea id="form_message" class="boxsize" name="message" placeholder="Message*" tabindex="3" rows="6" cols="5" maxlength="500"></textarea>
    </form>
    
    function loadForm(){
        var loginForm = document.querySelector('form'); //Selecting the form
        loginForm.addEventListener('submit', login);    //looking for submit
    }
    
    function login(e){
        e.preventDefault(); //to stop form action i.e. submit
    }
    
    <form onsubmit="myFunction(event)">
        Name : <input type="text"/>
        <input class="submit" type="submit">
      </form>
      <script>
      function myFunction(event){
        event.preventDefault();
        //code here
      }
      </script>
    
    <FORM NAME=frm1 ...>
    Name: <input type=textbox name=txtName id=txtName>
    <BR>
    <input type=button value="Submit" onclick=Validate()>
    
    
    
    <Script>
        function Validate() { 
            Msg = ""
    
    // Check fields
            if(frm1.txtName.value fails this) {
                Msg += "\n    The Name Field is improper"
            }
    // Do the same for the rest of the form
    
            if(Msg == "") {
                frm1.submit()
            } else {
                alert("Your form has errors\n" + Msg)
            }
        }
    </SCRIPT>