0
var form0 = document.forms[0];
form0.onsubmit = function(e){
alert("form submitted");
var email = form0.elements["email"].value;
var url = "https://bpi.briteverify.com/emails.json?address="+email+"&apikey=my-key&callback=emailResult";
jsonp(url, function(data) {
if (data.status != "valid") {
e.preventDefault();
alert("INVALID EMAIL");
}
});
}
function jsonp(url, callback) {
var callbackName = 'jsonp_callback_' + Math.round(100000 * Math.random());
window[callbackName] = function(data) {
delete window[callbackName];
document.body.removeChild(script);
callback(data);
};
var script = document.createElement('script');
script.src = url + (url.indexOf('?') >= 0 ? '&' : '?') + 'callback=' + callbackName;
document.body.appendChild(script);
}
Это работает в Chrome и Safari, но не в Firefox. Хотя «отправленной формы» предупреждение показано, но ничего после этого.Форма отправляется в любом случае в Firefox
Это вопрос Firefox или я делаю что-то неправильно?
Почему вы звоните ' e.preventDefault() 'в обратном вызове' jsonp() '? Это принадлежит обработчику' submit'. – Andreas
@Andreas, потому что в 'jsonp()' Я знаю, действительно ли письмо верное или нет. То, когда я решаю, для продолжения обработки формы или нет. – 3zzy
Но форма уже отправлена в этот момент времени. Переместите 'e.preventDefault()' в обработчик 'submit' и отправьте форму в t он обратный вызов. – Andreas