0

我正在尝试确定按钮用于提交表单。

我有两个按钮 - 在表单中取消和提交,根据点击哪个按钮,我想在提交之前执行一些功能。

我可以从服务器端的 POST 确定值​​,但需要先在客户端这样做

我调用什么 jquery 函数来确定是否使用了“取消”按钮?

表单的提交正在作为 jquery 验证的 submitHandler 事件的一部分进行处理。

这是元素:

<input name="submit" type="submit" value="Submit" />
<input name="cancel" type="submit" value="Cancel" />

这是提交处理程序:

submitHandler: function(form) {
                    form.submit();
                    }

谢谢

4

2 回答 2

1

尝试这个...

   $('#myform').validate({
        rules: {
            field1: {
                required: true,
                minlength: 5
            },
            field2: {
                required: true,
                minlength: 5
            }
        },
        submitHandler: function (form) { // for demo
            alert('form submitted');
            return false;
        }
    });

    $(':submit').on('click', function () {
        if ($(this).attr('name') == 'submit') {
            $(this).closest('form').submit();
        }
    });

    $('[name="cancel"]').click(function () {
        // your code that handles a cancel click
        alert('form cancelled');
        return false;
    });

现场示例

问候。

于 2013-01-30T20:42:51.663 回答
1

您不想click在 jQuery Validate 插件中使用外部或额外的处理程序是正确的,因为该插件已经submit click通过其submitHandler回调自动捕获事件。

您的问题是您实际上没有“取消”按钮。这只不过是一个重复的submit按钮......

<input name="cancel" type="submit" value="Cancel" />

无论您做什么,插件总是会将其click事件视为常规表单提交。如果你把它改成<button></button>? 还是不行。该插件还将button'click事件视为常规表单提交。该插件没有内置其他回调函数/选项可以捕获任何其他类型的按钮/取消click事件。

您唯一的选择是将其放在标签之外。<form></form>Valdiate 插件不会看到它,然后您可以将自己的click事件绑定到它。

您自己的cancel点击事件:

$('[name="cancel"]').click(function() {
    // your code that handles a cancel click
});

演示使用<input type="submit":http: //jsfiddle.net/wZwcQ/

演示使用<button></button>:http: //jsfiddle.net/h7XKc/

于 2013-01-30T23:04:37.690 回答