<form method="post" action="/Order/CheckOut/" onSubmit="return Validate()">

和然后...

function Validate() {
    alert($("#email").val());
    return false;
}

在搞砸了部分是,当我拿出它工作正常的警报,提交失败,但是当我把警报中,它允许提交经历......你到底?

我也试过这样:

function Validate() {
    if(document.getElementByID("email").value == "test"){
        alert("It says test.");
    }
    return false;
}

,得到了相同的行为,它永远不会使它的return语句...

如果我通过JS步骤与萤火虫和休息的警告或如果(根据以上的版本),它停在那里,我点击“步入”,它只是提交表单,为什么不是做它到返回假线?

有帮助吗?

解决方案

为什么在try块不把它包装?

function Validate() {
    try {
        alert($("#email").val());
    } catch (e) {
        alert("Problem: " + e);
    }

    return false;
}

其他提示

您可以使用event.preventDefault()代替。

$("form[name='myForm']").submit(function(e){
  e.preventDefault();
  alert($("#email").val());
});

您应该尝试将您的JavaScript,CSS和HTML所有独立。不整合它们,否则你会使得项目更加难以管理。代替使用HTML中onsubmit属性的,只是简单地从JavaScript的附加的逻辑形式的$.submit()方法我上面那样。

这个例子假设你已经给你的表格的名称“myForm的。”我只是用这个例子的,你应该itendify形成你正在处理的提交事件,而不是使用通用$("form")选择。

如果您已经使用jQuery的你在做这件事错开始。你不应该手动从onSubmit元素中指定<form>处理程序。如做@乔恩建议,只是绑定提交事件:

$("form").submit(function() {
    alert($("#email").val());
    return false;
});

在问题不在于你的函数返回true。问题是,在警报JavaScript的失败和JavaScript解释退出的代码。此时,浏览器与哪个是提交表单的默认操作继续进行。

这是为什么乔纳森·桑普森建议使用e.preventDefault()警报()之前,这样的浏览器不使用它的默认行为继续当警报()失败。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top