使用CustomAlertBox将焦点设置在文本框上

时间:2019-03-23 17:06:59

标签: javascript html alertdialog setfocus confirm-dialog

我对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模块?想法?

0 个答案:

没有答案