在警告框中单击ok后重定向提交的表单

javascript Redirect submitted form after clicking ok in the alert box

本文关键字:重定向 提交 表单 ok 警告 单击      更新时间:2023-09-26

我有一个表单

onclick confirm,我需要将它指向一个特定的url

function submitdata() { 
     if(confirm("Are You Sure You Want To Proceed?")) {
        location.replace("http://www.w3schools.com");
    } else { 
        alert("Cancelling"); 
    }
}
</script>

提交此表单后,submitdata()被调用。

然后我收到一个警报。

但是我的表单没有被重定向

<form id="registration_form" action="" method="post" onsubmit="return submitdata();">
        <div id="state"></div>

         <div class="reg-id">
            <label>
                <input placeholder="State:" type="text" tabindex="3" name="user_state" id="reg_state" value="">
            </label>
        </div>
        <div class="reg-id">
            <label>
                <input placeholder="City:" type="text" tabindex="3" name="user_city" id="reg_city" value="">
            </label>
        </div>
         <div class="reg-id-last">
            <label>
                <input placeholder="Zip/Postal:" type="text" tabindex="3" name="user_zip" id="reg_zip" value="">
            </label>
        </div>
            <input type="submit" value="Response" tabindex="3" name="reg_btn" id="id-submit">
        </div>
    </form>
 if(confirm("Are You Sure You Want To Proceed?")) {
    return true; 
    location.replace("http://www.w3schools.com");
 }

return从周围函数返回。之后什么都不会执行。您需要交换这两行

我明白了

<script>
    function submitdata() { 
       var r = confirm('Are you sure?');
        if (r == true) {
            window.open('http://www.google.com');
        } else {
            alert('it didnt work');
        }
        return false;         
    }
    </script>

如果您希望表单实际提交到该位置,那么表单数据将不会通过重定向发送。您可以通过将form标签的action属性设置为您想要的URL来提交数据,并将表单提交事件更改为如下内容:

function submitData(event) {
  if(confirm('Are you sure you want to proceed?') == false){
    event.preventDefault();
    return false;
  }
}

如果用户没有点击'ok',你就取消表单提交,而不是在用户点击'ok'时重定向。

如果你不想提交数据,那么你只需要移动你的返回语句,就像melpomene建议的。

注意:我总是写event.preventDefault()return false;,但我认为通常只有return false;也可以工作。但是,安全总比后悔好:)