我对javascript不切实际,我正在尝试更正此脚本以自定义我的警报框。无法在生成警报的文本框中设置焦点参数。有人解决了这个问题并设法解决了吗?
焦点出现在弹出窗口之后,消失了。应该将其插入“ removeCustomAlert”之后,但应该是动态的。
具有settimeout的解决方案不起作用,其他解决方案吗?
function Modulo() {
var text1 = document.modulo.text1.value;
var text2 = document.modulo.text2.value;
if ((text1 == "") || (text1 == "undefined")) {
alert("text 1 Required!");
document.modulo.text1.focus();
return(true);
}
if ((text2 == "") || (text2 == "undefined")) {
alert("text 2 Required!");
document.modulo.text2.focus();
return(true);
}
else {
document.modulo.action = "?update=ok";
document.modulo.submit();
return(false);
}
}
var ALERT_TITLE = "Attention!";
var ALERT_BUTTON_TEXT = "Ok";
if(document.getElementById) {
window.alert = function(txt) {
createCustomAlert(txt);
}
}
function createCustomAlert(txt) {
d = document;
if(d.getElementById("modalContainer")) return;
mObj = d.getElementsByTagName("body")[0].appendChild(d.createElement("div"));
mObj.id = "modalContainer";
mObj.style.height = d.documentElement.scrollHeight + "px";
alertObj = mObj.appendChild(d.createElement("div"));
alertObj.id = "alertBox";
if(d.all && !window.opera) alertObj.style.top = document.documentElement.scrollTop + "px";
alertObj.style.left = (d.documentElement.scrollWidth - alertObj.offsetWidth)/2 + "px";
alertObj.style.visiblity="visible";
h1 = alertObj.appendChild(d.createElement("h1"));
h1.appendChild(d.createTextNode(ALERT_TITLE));
msg = alertObj.appendChild(d.createElement("p"));
//msg.appendChild(d.createTextNode(txt));
msg.innerHTML = txt;
btn = alertObj.appendChild(d.createElement("a"));
btn.id = "closeBtn";
btn.appendChild(d.createTextNode(ALERT_BUTTON_TEXT));
btn.href = "#";
btn.focus();
btn.onclick = function() { removeCustomAlert();return false;}
alertObj.style.display = "block";
}
function removeCustomAlert() {
document.getElementsByTagName("body")[0].removeChild(document.getElementById("modalContainer"));
}
function confirmDelete() {
return confirm("Are You Sure?");
}
#modalContainer {
background-color:rgba(0, 0, 0, 0.3);
position:absolute;
top:0;
width:100%;
height:100%;
left:0px;
z-index:10000;
background-image:url(tp.png); /* required by MSIE to prevent actions on lower z-index elements */
}
#alertBox {
position:relative;
width:33%;
min-height:100px;
max-height:400px;
margin-top:50px;
border:1px solid #fff;
background-color:#fff;
background-repeat:no-repeat;
top:30%;
}
#modalContainer > #alertBox {
position:fixed;
}
#alertBox h1 {
margin:0;
font:bold 1em Raleway,arial;
background-color:#f97352;
color:#FFF;
border-bottom:1px solid #f97352;
padding:10px 0 10px 5px;
}
#alertBox p {
height:50px;
padding-left:5px;
padding-top:30px;
text-align:center;
vertical-align:middle;
}
#alertBox #closeBtn {
display:block;
position:relative;
margin:10px auto 10px auto;
padding:7px;
border:0 none;
width:70px;
text-transform:uppercase;
text-align:center;
color:#FFF;
background-color:#f97352;
border-radius: 0px;
text-decoration:none;
outline:0!important;
}
/* unrelated styles */
#mContainer {
position:relative;
width:600px;
margin:auto;
padding:5px;
border-top:2px solid #fff;
border-bottom:2px solid #fff;
}
h1,h2 {
margin:0;
padding:4px;
}
code {
font-size:1.2em;
color:#069;
}
#credits {
position:relative;
margin:25px auto 0px auto;
width:350px;
font:0.7em verdana;
border-top:1px solid #000;
border-bottom:1px solid #000;
height:90px;
padding-top:4px;
}
#credits img {
float:left;
margin:5px 10px 5px 0px;
border:1px solid #000000;
width:80px;
height:79px;
}
.important {
background-color:#F5FCC8;
padding:2px;
}
@media (max-width: 600px)
{
#alertBox {
position:relative;
width:90%;
top:30%;
}
<form name="modulo" method="post" id="form-01">
<input type="text" maxlength="250" size="50" autocomplete="off" name="text1" id="text1" value="" /><br/>
<input type="text" maxlength="250" size="50" autocomplete="off" name="text2" id="text2" value="" /><br/>
<input type="submit" name="Submit" value="ADD" onClick="Modulo();return false;" />
</form>
<br/><br/><br/><br/><br/>
<a href="#?delete=ok" onclick="return confirmDelete();">Delete with confirm</a>
是否可以在带有确认框的警报框中使用此js模块?想法?