0

我正在尝试使用 jquery 为我的 php 表单执行两个不同的 javascript 操作,该表单有两个提交按钮:“保存”和“下一步”。这个想法是两个按钮都提交将数据保存到数据库中的表单,但是当“下一步”通过客户端验证并进一步进行时,“保存”只是跳过验证,返回 true 并且用户留在表单上。

<form id="form" name="form" method="post" action="?action=my_php_form">
    <input type="submit" name="save" class="save" id="save" value="save"/>
    <input type="submit" name="next" id="next" class="next" value="next"/>
</form>

当用户在重新加载后单击“保存”或“下一步”时,我已经成功了,但是如果用户单击“下一步”,启动验证并提交返回 false,他将无法单击“保存”并不再忽略验证。这可能是什么原因?

$(function() {
    //Lets skip the whole thing if save is clicked
    $('#save').click(function() {
        $('#form').submit(function() {  
            return true;
        });
    });
    $('#next').click(function() {
        $('#form').submit(function() {
            var invalid = 0;
            //A lot of crazy validation, if some invalid stuff then increment increment invalid
            if(invalid > 0) {
                return false;
            }
            else {
                return true;
            }
        });
    });
});
4

4 回答 4

4

我想我会做这样的事情:

$(function() {
    //Lets skip the whole thing if save is clicked
    //Actually, no binding is needed as the button is already a submit button
    //Thx to Ocanal

    $('#next').click(function() {
        var invalid = 0;
        //Validation process
        if(invalid) {
            $('#form').submit();
        } else {
            return false;
        }
    });
});
于 2013-07-09T16:02:14.057 回答
1

您可以为非提交按钮使用不同的类型。

你会想要这样的东西:

<form id="form" name="form" method="post" action="?action=my_php_form">
    <input type="submit" name="save" class="save" id="save" value="save"/>
    <input type="button" name="next" id="next" class="next" value="next"/>
</form>

我认为现在发生在您身上的是这两个按钮都充当您的“提交”按钮,因此无论您单击哪个按钮或添加到 EventListener 中的功能如何,表单都在尝试提交。

于 2013-07-09T16:18:45.340 回答
1

为什么要跳过验证,尤其是如果它如此疯狂?无论如何,问题就在这里

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

这不会覆盖提交事件处理程序,这会向它添加一个函数。因此,如果您第一次单击nextthen save,您为 next 定义的功能仍然会在单击保存时触发。

虽然符号不清楚,但它非常合乎逻辑:这就是允许您从任何您希望的位置向 documentReady 事件“添加”操作的原因,而不仅仅是从中心位置。

于 2013-07-09T16:02:27.340 回答
0

首先,每次刷新页面时都会创建 Java Script。理解这一点很重要。

现在,如果您点击'Save'提交类型的按钮,您的信息将打包在表单数据包中并发送到服务器。提交操作需要重新加载页面(!)。因此,如果您想在字段中保留值(如果这是您想要的),您可以使用 PHP。

使用 PHP 并不复杂。我将标签内和<body>标签前的代码组合在一起<form>'Save'代码检查变量字段是否有值$_POST,如果是,我们将保存接收到的值。

然后,我使用变量访问呈现值<? = $name ?>。而已。

<?php
    $name = "";
    $credit = "";
    if(isset($_POST['save'])) {
        $name = $_POST['name'];
        $credit = $_POST['creditCard'];
    }
?>
<form id="form" name="form" method="post" action="good.php">
    <input type="text" name="name" value="<?=$name ?>" />
    <input type="text" name="creditCard" value="<?=$credit ?>"/>
    <input type="submit" name="save" class="save" id="save" value="save"/>
    <input type="submit" name="next" id="next" class="next" value="next"/>
</form>
于 2013-07-09T16:52:26.833 回答