【问题标题】:javascript confirm (cancel) still submits form when returning false返回false时javascript确认(取消)仍然提交表单
【发布时间】:2015-10-07 09:41:25
【问题描述】:

当我提交并单击“确定”时,它会继续,但当我按下“取消”时,它仍然会提交。我尝试使用此代码,但提交和取消按钮仍然做同样的事情。

model.saveForm = function() {
    var r = confirm("Press a button");
    alert(p);
    if (r == true) {
        x = "You pressed OK!";

        if (!validateRequiredNew()) return;
        model.saving(true);

        // check if group id is needed
        var generatedGroupIdPromise = null;
        // if (model.selectedUsers().length > 1 || model.selectedUsers()[0].selectedRoles().length > 1) {
        generatedGroupIdPromise = $.ajax({
            url: '../_vti_bin/listdata.svc/GroupIdGeneratorList',
            type: "POST",
            contentType: "application/json; charset=utf-8",
            data: "{Title: 'dummy'}",
            processData: false,
            dataType: "json"
        });                         

    } else if (r == false){
        x = "You pressed Cancel!"; 
    }

还有aspx页面:

<button data-bind="click: saveForm, visible: !saving()">Submit Request</button>

【问题讨论】:

  • &lt;button&gt; 是否在 &lt;form&gt; 中,并且仍在提交的是 &lt;form&gt;?请注意,默认情况下,&lt;button&gt;type="submit" - 如果您将它放在 &lt;form&gt; 中,您可能希望将其设为 type="button",这样它就不会提交表单。
  • 与问题无关,但您从不在 JS 的 if 中需要 == true。只需使用:if (r) { 并将} else if (r == false){ 替换为} else {
  • 你确定 r 是假的吗?可以显示确认功能吗?
  • 嗨 Cerbrus,是的,最初是这样,但我在尝试寻找解决方案时更改了它。 James 提交按钮就在表单结束标记之后。
  • @JosephKhella window.confirm result 是一个布尔值”

标签: javascript


【解决方案1】:

只需将return false;event.preventDefault(); 放入您的方法中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 2011-05-12
    • 2012-03-23
    相关资源
    最近更新 更多