Javascript 如果没有验证错误,我希望弹出窗口出现
我有一个按钮叫做“准备问题”。现在,当我单击此按钮时,此按钮执行两项操作,使用validation()函数验证表单,以便在表单中出现错误(空文本框和单选按钮未选中)时,在页面上显示相应的错误消息。但该按钮也使用“openSessionPopup”功能,以便打开一个弹出窗口,其中说明“会话”一词 问题是,当我单击按钮时,它会同时执行这两个功能,因此如果存在验证错误,它会显示验证错误,并打开弹出窗口 我想做的是,弹出窗口应该只在没有验证错误后显示。但我似乎无法让它工作,其他人知道怎么做吗 下面是我的代码:Javascript 如果没有验证错误,我希望弹出窗口出现,javascript,validation,function,popup,project,Javascript,Validation,Function,Popup,Project,我有一个按钮叫做“准备问题”。现在,当我单击此按钮时,此按钮执行两项操作,使用validation()函数验证表单,以便在表单中出现错误(空文本框和单选按钮未选中)时,在页面上显示相应的错误消息。但该按钮也使用“openSessionPopup”功能,以便打开一个弹出窗口,其中说明“会话”一词 问题是,当我单击按钮时,它会同时执行这两个功能,因此如果存在验证错误,它会显示验证错误,并打开弹出窗口 我想做的是,弹出窗口应该只在没有验证错误后显示。但我似乎无法让它工作,其他人知道怎么做吗 下面是我的
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Create a Session</title>
<script type="text/javascript">
function validation() {
var btnRadioO = document.getElementsByName("sessionNo");
var isbtnRadioChecked = false;;
var dateTextO = document.getElementById("datepicker");
var timeTextO = document.getElementById("timepicker");
var errMsgO = document.getElementById("radioAlert");
var errDateTimeMsgO = document.getElementById("dateTimeAlert");
var errDateMsgO = document.getElementById("dateAlert");
var errTimeMsgO = document.getElementById("timeAlert");
for(i=0; i < btnRadioO.length; i++){
if(btnRadioO[i].checked){
isbtnRadioChecked = true;
}
}
if(!isbtnRadioChecked) {
errMsgO.innerHTML = "Please Select the Number of Sessions you Require";
} else {
errMsgO.innerHTML = "";
}
if (dateTextO.value == ''){
errDateMsgO.innerHTML = "Please Select a Date";
}else{
errDateMsgO.innerHTML = "";
}
if (timeTextO.value == ''){
errTimeMsgO.innerHTML = "Please Select a Time";
}else{
errTimeMsgO.innerHTML = "";
}
}
function openSessionPopup (session) {
window.open(session,
'window',
'width=500,height=500,scrollbars=yes,status=no');
}
</script>
</head>
<body>
<form action="create_session.php" method="post">
<table>
<tr>
<th>Number of Sessions :</th>
<td class="sessionNo"><input type="radio" name="sessionNo" value="1" />1</td>
<td class="sessionNo"><input type="radio" name="sessionNo" value="2" />2</td>
<td class="sessionNo"><input type="radio" name="sessionNo" value="3" />3</td>
<td class="sessionNo"><input type="radio" name="sessionNo" value="4" />4</td>
<td class="sessionNo"><input type="radio" name="sessionNo" value="5" />5</td>
</tr>
</table>
<div id="radioAlert"></div>
<p><input type="text" id="datepicker" >
<br/><span id="dateAlert"></span></p>
<p><input type="text" id="timepicker" >
<br/><span id="dateTimeAlert"></span><span id="timeAlert"></span></p>
<p><input class="questionBtn" type="button" value="Prepare Questions" name="prequestion" onClick="validation();openSessionPopup(this.href); return false" /></p>
</form>
</body>
创建会话
函数验证(){
var btnRadioO=document.getElementsByName(“sessionNo”);
var isbtnRadioChecked=false;;
var dateTextO=document.getElementById(“日期选择器”);
var timeTextO=document.getElementById(“时间选择器”);
var errMsgO=document.getElementById(“radioAlert”);
var errDateTimeMsgO=document.getElementById(“dateTimeAlert”);
var errDateMsgO=document.getElementById(“dateAlert”);
var errTimeMsgO=document.getElementById(“timeAlert”);
对于(i=0;i
首先,您应该将事件处理程序移出html标记
接下来,您应该将事件处理程序绑定到该单击事件
之后,您应该修改您的验证方法,以返回true或false来表示它是否通过了验证
最后,您应该在showpopup方法调用的条件包装中使用该验证结果
差不多
function myClickHandler(){
if(validation()){
showSessionPopup();
}
}
对于您的处理程序,这是如何绑定它的
document.getElementsByName("prequestion")[0].addEventListener('click', myClickHandler);
最后,您可以这样修改您的验证方法
function validation() {
var result = true;
var btnRadioO = document.getElementsByName("sessionNo");
var isbtnRadioChecked = false;;
var dateTextO = document.getElementById("datepicker");
var timeTextO = document.getElementById("timepicker");
var errMsgO = document.getElementById("radioAlert");
var errDateTimeMsgO = document.getElementById("dateTimeAlert");
var errDateMsgO = document.getElementById("dateAlert");
var errTimeMsgO = document.getElementById("timeAlert");
for(i=0; i < btnRadioO.length; i++){
if(btnRadioO[i].checked){
isbtnRadioChecked = true;
}
}
if(!isbtnRadioChecked) {
errMsgO.innerHTML = "Please Select the Number of Sessions you Require";
result = false;
} else {
errMsgO.innerHTML = "";
}
if (dateTextO.value == ''){
result = false;
errDateMsgO.innerHTML = "Please Select a Date";
}else{
errDateMsgO.innerHTML = "";
}
if (timeTextO.value == ''){
errTimeMsgO.innerHTML = "Please Select a Time";
result = false;
}else{
errTimeMsgO.innerHTML = "";
}
return result;
}
函数验证(){
var结果=真;
var btnRadioO=document.getElementsByName(“sessionNo”);
var isbtnRadioChecked=false;;
var dateTextO=document.getElementById(“日期选择器”);
var timeTextO=document.getElementById(“时间选择器”);
var errMsgO=document.getElementById(“radioAlert”);
var errDateTimeMsgO=document.getElementById(“dateTimeAlert”);
var errDateMsgO=document.getElementById(“dateAlert”);
var errTimeMsgO=document.getElementById(“timeAlert”);
对于(i=0;i
如果有错误,这将使validation()方法返回false。我有两个问题,第一个问题是将事件处理程序移到html标记之外是什么意思,第二个问题是如何将函数设置为等于true或false,换句话说,如果所有验证都是明确的,那么如何设置它等于false,否则为true?@MalcolmPickup我编辑了我的答案,以帮助您更好地了解您的解决方案。我添加了如何在javascript中绑定事件以及如何修改验证方法。享受吧!