我偶然发现了一个小问题。我试图使用$.ajax
发布表单,但似乎它不适用于moblie Safari或Chrome。
这是我的HTML:
<form class="signup-form" method="POST" action="">
<input type="hidden" name="u" value="03d275307f32a6e64103c71c4">
<input type="hidden" name="id" value="5425de82c5">
<input type="text" class="signup-input email pull-left"
name="EMAIL" placeholder="Enter your email" value="">
<button class="btn btn-signup">GET EARLY ACCESS</button>
</form>
<!-- second form -->
<form class="signup-form" method="POST" action="">
<input type="hidden" name="u" value="03d275307f32a6e64103c71c4">
<input type="hidden" name="id" value="5425de82c5">
<input type="text" class="signup-input email pull-left"
name="EMAIL" placeholder="Enter your email" value="">
<button class="btn btn-signup">GET EARLY ACCESS</button>
</form>
这是我的jQuery:
$(document).ready(function() {
var SIGNUP_FORM = $('.signup-form');
var EMAIL_FIELD = $('.email');
SIGNUP_FORM.submit(function() {
var submitBtn = $(this).children('button');
submitBtn.text('SENDING...');
if (EMAIL_FIELD.val().length) {
var data = $(this).serialize();
var url = 'MY_URL';
$.ajax({
url: url,
type: 'GET',
data: data,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function(data) {
submitBtn.text('THANKS!');
},
error: function(err) {
alert("Could not connect to the registration server.");
}
});
}
else {
$(this).children('input').css('border', '1px solid red');
submitBtn.text('OOOPS');
}
return false;
});
});
SIGNUP_FORM = $('.signup-form');
和EMAIL_FIELD = $('.email');
在所有浏览器中都应该可以,但不能在移动版Safari或Chrome中使用。
当我尝试alert(EMAIL_FIELD.val());
它在移动设备上是空的但在桌面浏览器中没有。
我做错了什么?
答案 0 :(得分:0)
在表单的submit
事件的事件处理程序中,this
是表单,可以使用this.inputName
访问表单中唯一命名的输入。
所以在您的情况下,而不是if (EMAIL_FIELD.val().length)
,您可以说if (this.EMAIL.value !== '')
等。
目前您正在从页面中选择所有电子邮件字段,只检查第一个的值长度。