【发布时间】:2011-11-24 07:08:15
【问题描述】:
我的确认有点小问题。
在我的代码中包含一个确认框之前发生的事情是,当我单击一个按钮 (name=preQuestion) 时,如果有任何验证错误,那么它将在页面上显示验证错误并且不提交表单,如果有没有验证错误,那么它将提交表单。
但是我现在想做的但我无法开始工作并且一直给我错误的是,如果有验证错误,那么它会做它目前正在做的事情,但是如果没有验证错误,那么我希望出现一个确认框,说明...并且用户将单击确定或取消。如果用户单击确定然后提交表单,如果用户单击取消则关闭确认框并留在同一页面上。我哪里错了?
以下是 javascript 代码(我有缩短代码,因此它不包含所有验证代码,否则会导致代码溢出):
function validation() {
var isDataValid = true;
var sessionNoO = document.getElementById("sessionNo");
var questionNumberO = document.getElementById("txtQuestion");
var roomTextO = document.getElementById("room");
var errSessionMsgO = document.getElementById("sessionNoAlert");
var errQuesMsgO = document.getElementById("numberAlert");
var errRoomMsgO = document.getElementById("roomAlert");
var trimmedRoomText = roomTextO.value.replace(/^\s+/, '').replace(/\s+$/, '');
if (sessionNoO.value == ""){
errSessionMsgO.innerHTML = "Please Enter in the Number of Sessions you Require";
isDataValid = false;
}else if (sessionNoO.value == 0){
errSessionMsgO.innerHTML = "Number of Sessions Must be More than 0";
isDataValid = false;
}else{
errSessionMsgO.innerHTML = "";
}
if(questionNumberO.value == 0){
errQuesMsgO.innerHTML = "Please Set the Number of Questions";
isDataValid = false;
} else {
errQuesMsgO.innerHTML = "";
}
if (roomTextO.value == ""){
errRoomMsgO.innerHTML = "Please Enter in a Room Number";
isDataValid = false;
}else if (!trimmedRoomText.length){
errRoomMsgO.innerHTML = "Please Enter in a Room Number";
isDataValid = false;
}else{
errRoomMsgO.innerHTML = "";
}
return isDataValid;
}
function submitform()
{
var sessionFormO = document.getElementById("sessionForm");
sessionFormO.submit();
}
document.getElementsByName("prequestion")[0].addEventListener('click', myClickHandler);
function myClickHandler(){
if(validation()){
function showConfirm(){
var confirmMsg=confirm("Make sure that your details are correct, once you proceed after this stage you would
not be able to go back and change any details towards your Session.Are you sure you want to Proceed?");
if (confirmMsg==true)
{
submitform();
}else{
parent.close();
}
}
}
}
Html表单代码(不显示整个表单以免代码溢出):
<form action="QandATable.php" method="post" id="sessionForm">
<p><strong>2: Number of Sessions you Require:</strong> <input type="text" id="sessionNo" onkeypress="return isNumberKey(event)"><br/><span id="sessionNoAlert"></span></p>
<p><strong>8: Room:</strong> <input type="text" id="room"><br/><span id="roomAlert"></span></p> <!-- Enter Room here-->
<table>
<tr>
<th>9: Number of Questions:</th>
<td class="spinner"><input type="text" class="spinnerQuestion" id="txtQuestion" name="textQuestion"></td>
<td><button class="scrollBtn" id="btnQuestionUp" type="button"><img src="Images/black_uppointing_triangle.png" alt="Increase" /></button>
<button class="scrollBtn" id="btnQuestionDown" type="button"><img src="Images/black_downpointing_triangle.png" alt="Decrease" /></button></td>
</tr>
</table>
<div id="numberAlert"></div>
<p><strong>10: </strong><input class="questionBtn" type="button" value="Prepare Questions" name="prequestion" onClick="myClickHandler()"/></p> <!-- Prepare Questions here-->
</form>
【问题讨论】:
-
myClickHandler() 方法定义未找到??为什么你不直接调用validation() onclick
-
因为我想让按钮验证,然后显示确认框,然后提交表单,所以最好创建一个从所有 3 个函数中检索信息的函数
-
在我包含 showConfirm() 函数之前,MyClickHandler 工作得很好
-
没问题,我喜欢这个问题并纠正它现在检查它
标签: javascript html forms function confirmation