javascript - 提交前修改表单数据

标签 javascript jquery jquery-forms-plugin

我将 jQuery 与 form plugin 结合使用我想在提交之前拦截表单数据并进行更改。

表单插件有一个名为 beforeSubmit 的属性应该执行此操作,但我似乎无法运行我指定的函数。

这是表单的标记(省略了一些样式细节):

<form id="form1">
    <fieldset id="login">
        <legend>Please Log In</legend>
        <label for="txtLogin">Login</label>
        <input id="txtLogin" type="text" />
        <label for="txtPassword">Password</label>
        <input id="txtPassword" type="password" />
        <button type="submit" id="btnLogin">Log In</button>
    </fieldset>
</form>

这是我目前拥有的 javascript:

$(document).ready(function() {
    var options = {
        method: 'post',
        url: 'Login.aspx',
        beforeSubmit: function(formData, form, options) {
            $.each(formData, function() { log.info(this.value); });
            return true;
        }
    };
    $('form#form1').ajaxForm(options);
});

(log.info() 来 self 正在使用的 Blackbird 调试器库)

当我单击提交按钮时,它使用 GET 而不是我指定的 POST 动词,并且我的 beforeSubmit 函数没有记录任何内容。似乎 ajaxForm 插件根本没有应用于表单,但我不明白为什么。有人可以帮忙吗?

最佳答案

我通过 firebug 运行了以下代码,它看起来像宣传的那样工作,但是 beforeSubmit 回调中的 formData 变量为空,因为您没有在文本框上设置名称属性。

<script type="text/javascript">
  $(document).ready(function() {
    var options = {
      beforeSubmit: showData
    };
    $('form#form1').ajaxForm(options);
  });
  function showData(formData, form, options) {
    //var formData = [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ];
    $.each(formData, function(i, obj) { log.info(obj.name + " | " + obj.value); });
    return true;
  }
</script>

<form id="form1" action="Login.aspx" method="post">
<fieldset id="login">
    <legend>Please Log In</legend>
    <label for="txtLogin">Login</label>
    <input id="txtLogin" type="text" name="User" />
    <label for="txtPassword">Password</label>
    <input id="txtPassword" type="password" name="Pass" />
    <button type="submit" id="btnLogin">Log In</button>
</fieldset>
</form>

关于javascript - 提交前修改表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/344451/

相关文章:

jquery - 仅滚动子元素

jquery 表单插件 noConflict 问题

jquery.form和文件上传的跨域请求

javascript - 无法按比例变换 100% : Error 8007

javascript - 跟踪发送给用户的实时通知的最佳方式是什么?

javascript - 在 Angular 指令中定义 ng-click 的函数

javascript - 为变量赋值 WHILE 循环

javascript - 如何在Javascript方法中使用clientId获取selectOneMenu的值?

javascript - ajax提交上传进度总是返回100

javascript - 我如何使用 3 个复选框/单选按钮作为选项在 javascript 中创建提示?