Ajax表单-仍然无法使其与验证一起工作
Ajax form - still cannot get it working with validation
我之前在这里发布过,但收到的答案没有帮助,因为它们不起作用。
我有一个使用AJAX的表单,但没有显示错误或成功消息。
有人能看到我可能忽略了什么吗?谢谢
HTML
<form id="newsletter" action="http://app.bronto.com/public/webform/process/" method="post">
<input type="hidden" name="fid" value="gmy3v1ej883x2lffibqv869a2e3j9" />
<input type="hidden" name="sid" value="37ea72cebcc05140e157208f6435c81b" />
<input type="hidden" name="delid" value="" />
<input type="hidden" name="subid" value="" />
<script type="text/javascript">
var fieldMaps = {};
</script>
<label for="nameField">Name:</label>
<input id="nameField" type="text" id="field_66663" name="39829[66663]" value="" />
<label for="emailField">Email:</label>
<input id="emailField" type="text" name="39821" value="" />
<input type="submit" value="Submit" />
<div id="newsletter-message" style="display:none;"></div>
</form>
JS
//ajax subscribe
$(document).ready(function(){
$("#newsletter").submit(function(event) {
event.preventDefault();
alert("submitting");
alert(data); //it doesn't alert here??
console.log($("#newsletter").serialize());
$.post($("#newsletter").attr("action"), $("#newsletter").serialize(), function(data){
alert(data); //doesn't alert here either
if(data == 'success'){
$('#newsletter-message').html('You have been signed up.').removeClass('error').css('visibility','visible');
} else {
$('#newsletter-message').html('Please complete the fields and re-submit').addClass('error').css('visibility','visible');
}
});
//Stop the normal POST
return false;
});
});
编辑
我现在已经试过了,但仍然没有成功。。
$("#newsletter").submit(function(event) {
event.preventDefault();
var $form = $( this ),
ufname = $form.find( 'input[name="39829[66663]"]' ).val(),
uemail = $form.find( 'input[name="39821"]' ).val(),
url = $form.attr( 'action' );
var posting = $.post( url, { name: ufname, email: uemail } );
posting.done(function( data ) {
$('#newsletter-message').html('You have been signed up.').removeClass('error').css('visibility','visible');
});
});
visibility
和display
在CSS中是两个不同的东西。
您正在使用display:none;
创建显示器div
,但随后您尝试使用.css('visibility','visible');
使其可见,因此您最终只能使用:
<div style="display: none; visibility: visible;" id="newsletter-message">...</div>
由于display:none;
的原因,它仍然不可见。
您应该将if中的操作替换为:
if(data == 'success'){
$('#newsletter-message').html('You have been signed up.').removeClass('error').show();
} else {
$('#newsletter-message').html('Please complete the fields and re-submit').addClass('error').show();
}
以下是关于.show()
jQuery函数的文档:http://api.jquery.com/show/
我注意到的一件小事是,名称字段使用2 id
属性,这会使您的输入无效,并可能导致问题。
<input id="nameField" type="text" id="field_66663" name="39829[66663]" value="" />
也要按照@Thierry所说的去做,尽可能避免在名称字段中使用数字。
相关文章:
- 当与Dojo验证一起使用时,Chrome 41密码保存会做出错误的选择
- 为什么Angularjs验证don't与输入[type=“number”]一起工作
- 如何一起显示验证消息
- 让 JavaScript 验证与 PHP 一起使用
- 一段时间后隐藏与 angularjs 表单验证一起显示的错误标签
- 多个 Angular 验证器独立工作,但不能一起工作
- Reg Ex 不会验证我是否将 # 与其他字符或数字一起使用
- 两个 HTML Onsumbit 验证与 Java 一起
- Javascript验证,与表单链接在一起
- Ajax表单-仍然无法使其与验证一起工作
- Knockout.js和敲除验证不能一起工作
- 表单验证不能与progressButton js一起工作
- RegExp用于验证不与数组一起工作的网站URL
- 用户登录身份验证如何与React native一起工作
- knockout.js验证插件不能与CakePHP一起工作
- Rails disable-with不能与jquery验证一起工作
- 奇怪的骨干.与require.js和backbone.stickit一起使用时的验证错误
- Parsley.js -在同一页面上以不同形式具有相同名称的单选按钮将被一起验证
- 是否可以将摘要身份验证与XMLHTTPRequest一起使用?
- jquery Malsup's的表单插件和Ketchup验证一起工作