2012-06-05 95 views
0

我需要帮助提交表单,其中我已经检查邮件是否存在于下拉列表中,同时提交表单时显示警报消息,还提交表单,当没有提示信息时只显示表单需要提交on提交验证

$(document).on('click', '#Records', function (event) { 
    $("#dropval select option:selected").each(function() { 
     var z = $(this).val(); 
     //alert(z); 
     if(z != 'email') { 
      alert('please select Email'); 
      e.preventDefault(); 
      return false; 
     } else { 
      return true; 
     } 
    }); 
}); 
}); 

    <form name="search" method="post" action="sample1.php" > 
    <div id="dropval"> 

    <select name="select3[1]" class="mySelects" > 
    <option value="None" selected > None</option> 
    <option value="email" >email</option> 
    <option value="firstname" >firstname</option> 
    <option value="lastname" >lastname</option> 
    <option value="mobile" >mobile</option> 
    </select> 
    <select name="select3[2]" class="mySelects" > 
    <option value="None" selected > None</option> 
    <option value="email" >email</option> 
    <option value="firstname" >firstname</option> 
    <option value="lastname" >lastname</option> 
    <option value="mobile" >mobile</option> 
    </select> 
    <select name="select3[3]" class="mySelects" > 
    <option value="None" selected > None</option> 
    <option value="email" >email</option> 
    <option value="firstname" >firstname</option> 
    <option value="lastname" >lastname</option> 
    <option value="mobile" >mobile</option> 
    </select> 
    <select name="select3[4]" class="mySelect" > 
    <option value="None" selected> None</option> 
    <option value="email" >email</option> 
    <option value="firstname" >firstname</option> 
    <option value="lastname" >lastname</option> 
    <option value="mobile" >mobile</option> 
    </select> 
    </div> 
    <input type="submit" value="submit" id="Records"> 
    </form> 
+0

你也可以给我们你的HTML? 另外,把'e.preventDefault()'放在句柄的开头。另外,你永远不会给处理程序提供'e',所以它不存在。 – Mosselman

+0

更新了html代码 – user1433824

+0

答案可能是event.preventDefault()。 Chris Ledet在我做之前就已经有了。他应该得到荣誉。加入event.preventDefault()后加入 – Mosselman

回答

0

试试这个:

$('#formy').bind('submit', function(event){ 
    var success = false; 

    $("#dropval select option:selected").each(function() { 
     var z = $(this).val(); 
     if(z == 'email') { 
      success = true; 
     } 
    }); 

    return success; 
}); 

你在循环返回,这将不会做任何的提交。

+0

谢谢但仍然选择电子邮件表格后没有得到提交 – user1433824

+0

只是为了返回成功当然是很多清洁。但让我们看看为你解决这个问题;)。 – Mosselman

+0

修正:http://jsfiddle.net/f7WcD/ – Mosselman

0

如果你在表单上调用你的函数而不是按钮点击它应该解决你的问题,因为返回false在这里停止表单提交。

$('#formName').on('submit', function() { 
    //Validation code here 
    if(valid == false) { 
     return false; //Stops the form from submitting 
    } else { 
     return true; //Allows the form to submit 
    } 
}); 
+0

不是问题的答案。我是一个建议,但几乎不值得'回答'。 – Mosselman

0
$(document).on('click', '#Records', function(event) { 
    $("#dropval select option:selected").each(function(){ 
     var z = $(this).val(); 
     //alert(z); 
     if(z!='email'){ 
      alert('please select Email'); 
      event.preventDefault(); // 'e' was undefined before, as you named your variable 'event'. This would have been causing an error and code below would not have been executed - as a result, your form would have been submitted after the alert. 
      return false; 
     } 
    }); 
}); 

作为边注,结合事件的documentclick是低效的。尝试将其绑定到更亲近的父级。

+0

我喜欢,干净。我怀疑返回错误应该可行,但我已经看到它不会这样做一次或两次。也许会抛出event.preventDefault()只是为了确保? – Mosselman

+0

其实你是对的。在这种情况下,我不认为'return false'会起作用 - 因为它正在返回'each()'回调函数。 – ahren

+0

虽然说我说得对,但我不会去;)。我没有抓到。我只是知道我对'只是'返回错误有不好的经验。 – Mosselman