【问题标题】:Submit form with html5 validation and jquery ajax使用 html5 验证和 jquery ajax 提交表单
【发布时间】:2013-05-19 05:46:05
【问题描述】:

我在验证表单时遇到问题,因为如果我在表单的每个元素中使用 required 属性并按下提交,则在填写表单之前不会处理表单,但在我的文件中我添加了一个函数 functions.js点击按钮发送数据表单,html5验证不再受尊重,想知道为什么会这样。

没有 jquery 事件

表格

<form class="user-form" method="post">
<p><i>Todos los campos son requeridos!</i></p>
<p> 
    <input id="uName" class="span5" name="uName" type="text" placeholder="Nombre completo" required/>
</p>
<p> 
    <input id="uEmail" class="span5" name="uEmail" type="email" placeholder="E-mail" required/>
</p>
<p> 
    <input id="uUser" class="span5" name="uUser" type="text" placeholder="Usuario" required/>
</p>
<p> 
    <input id="uPasswd" class="span5" name="uPasswd" type="password" placeholder="Contraseña" required/>
</p>
<p> 
    <select id="uType" class="span5" name="uType" required>
        <option value="0">Tipo de usuario</value>
        <option value="1">Emisor</value>
        <option value="2">Revisor</value>
    </select>
</p>
<p>
    <input class="saveUser btn btn-primary" type="submit" value="Guardar"/>
</p>
</form>

jQuery 事件

$('.saveUser').on('click',function() {
data = $('.user-form').serializeArray();

data.push({
    name: 'tag',
    value: 'saveUser'
})

console.log(data);
return false;
    /* I put the above code for check data before send to ajax*/
$.ajax({
        url: url,
        type: 'post',
        data: data,
        success: function (data) {
            if (data.success) {

            } else {

            }
        }
});
return false;
})

然后,如果我使用 jquery 事件发送带有“必需”属性的 ajax html5 验证的数据不起作用。

如果我将点击 .save-user 更改为提交表单,则可以进行 html5 验证,但不能使用 jquery 事件中的代码。

其他信息

上面的表格使用并包含在两个部分中

<a href="#" id="lSignup">Sign-up Free</a>
<section id="sign-up">
    /* Form */
</section>
<a href="#" id="lEdit">Edit information</a>
<section id="edit-user">
    /* Form */
</section>

然后,当我点击 lSignup 时,将 id 添加到 user-form

$('#lSignUp').on('click', function() { $('.user-form').attr('id','save-user'); })

如果我点击 lEdit..

$('#lEdit').on('click', function() { $('.user-form').attr('id','edit-user'); })

user-form添加ID后,显示该表单以填充或编辑字段并使用事件jquery保存数据。

【问题讨论】:

  • 您可以使用onSubmit 事件来做到这一点。在该函数中使用$.ajax 代码并返回false(这将阻止表单提交)。
  • 当您提交表单时,浏览器会检查所需的内容。您的代码绕过了这一点。这意味着您必须根据属性进行自己的 jQuery 检查。
  • 如果我使用 $('.user-form').on('submit', function() {...... 工作正常,但我需要使用 $('#save- user').on('submit', function(){ .. 当用户需要注册或 $('#edit-user').on('submit', function(){ .. 当用户需要编辑你的信息,但如果我使用 ID 而不是表单类,则不起作用。

标签: jquery ajax html validation required


【解决方案1】:
$(document).on('submit','#save-user',function(e) {
  e.preventDefault();
  data = $(this).serializeArray();

  data.push({
    name: 'tag',
    value: 'saveUser'
  })

  console.log(data);

    /* I put the above code for check data before send to ajax*/
    $.ajax({
        url: url,
        type: 'post',
        data: data,
        success: function (data) {
            if (data.success) {

            } else {

            }
        }
   });
return false;
})

【讨论】:

  • 如果我使用 $('.user-form').on('submit', function() {...... 工作正常,但我需要使用 $('#save- user').on('submit', function(){ .. 当用户需要注册或 $('#edit-user').on('submit', function(){ .. 当用户需要编辑你的信息,但如果使用 ID 而不是表单类,则不起作用
  • 动态使用$(document).on('submit','selector',function(){...}) bcz 绑定事件。
  • 我认为需要对建议的代码进行解释才能获得高质量的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
  • 2014-06-11
  • 2012-07-24
  • 2023-03-04
  • 1970-01-01
相关资源
最近更新 更多