返回后功能触发

时间:2015-08-31 15:06:12

标签: javascript jquery

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在身体里。老实说,我不知道什么是错的。

此外,如果没有现场测试,该功能将不会发出帖子请求。浏览器只是刷新。

2 个答案:

答案 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/