function submitQuestionFunction(){
var question = document.getElementById("questionSearchInput").value;
var email = document.getElementById("emailTextInput").value;
if(question == null){
alert("you must ask a question");
return false;
}
if(question == ""){
alert("you must ask a question");
return false;
}
if(email == null){
alert("you must Fill in your email");
return false;
}
if(email == ""){
alert("you must Fill in your email");
return false;
}
var atpos = email.indexOf("@");
var dotpos = email.lastIndexOf(".");
if (atpos< 1 || dotpos<atpos+2 || dotpos+2>=email.length) {
alert("Not a valid e-mail address");
return false;
}
$.post("askQuestion.php", {"question":question, "email":email}, function(data){
console.log(data);
location.href = "http://www.example.com/questionAsked.html";
});
}
好的,这个功能很简单。它会在html中的按钮上触发onclick事件。问题是即使你没有填写questionSearchInput字段或emailTextInput feild。功能提醒但浏览器刷新。而不是返回false。
值得注意的是,在此之前我收到一个关于submitQuestion()不是函数的错误。所以我把它改成了submitquestionFunction()。我不确定那是原来的问题。由于某种原因,浏览器不喜欢我的功能。它在宣布 的页面。 onclick在身体里。老实说,我不知道什么是错的。
此外,如果没有现场测试,该功能将不会发出帖子请求。浏览器只是刷新。
答案 0 :(得分:1)
我会改变一些事情。
我会使用if / else if / else来正确构建你的条件。还将检查值的条件组合为null或空白字符串以减少代码。最后,而不是使用indexof lastindex检查有效的电子邮件使用正则表达式来检查字符串。
jsfiddle中的正则表达式不允许xx @ .. xy这是一个无效的地址但你的代码当前会。
http://jsfiddle.net/SeanWessell/4nu6utLc/
function submitQuestionFunction() {
var question = $("#questionSearchInput").val();
var email = $("#emailTextInput").val();
var emailRegEx = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
if (question == null || question == "") {
alert("you must ask a question");
return false;
} else if (email == null || email == "") {
alert("you must Fill in your email");
return false;
} else if (emailRegEx.test(email) == false) {
alert("Not a valid e-mail address");
return false;
} else {
//$.post("askQuestion.php", {"question":question, "email":email}, function(data){
//console.log(data);
//location.href = "http://www.example.com/questionAsked.html";
//});
alert("everything is valid POST!");
return true;
}
}
答案 1 :(得分:0)
如果您从表单内的提交按钮调用您的函数,您可能希望添加/更改您的函数以开始:
function submitQuestionFunction(event){
event.preventDefault();
...
在此处查看此行动:http://jsfiddle.net/forloop/EdJQE/