0

在调用该函数后,我一直在尝试获取 xmlhttp.responseText,因为我希望做一些显示和隐藏对象。但似乎我无法匹配 innerhtml 并显示按钮之类的对象。

更新的 Javascript 函数:

function ShowHideDisplay(str)
{
   xmlhttp = new XMLHttpRequest();
   //It will echo whatever message into this response.text.
   if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 
   {
   document.getElementById("validate").innerHTML = xmlhttp.responseText;
   }
   //Using test
   var successText = "<img src=\"./images/success.gif\" alt=\"Correct!\">Can be used";
   document.getElementById("validate").innerHTML = responseText;
   if(document.getElementById("validate").innerHTML.test(/success/gmi))
   {
       document.getElementById("submit").style.visibility = 'visible';
   }
   else
   {
       document.getElementById("submit").style.visibility = 'hidden';
   }
}

HTML 表单:

 <input name="Numbers" type="text" id="Numbers" onkeyup="ShowHideDisplay(this);" value=""/>
 <span id="validate"></span>
 //wants to hide and show upon onkeyup and getting the span id of validate.innerhtml success message
 <input name="submit" id="submit" type="submit">

我只需要获取验证值或 innerhtml 文本的 span id 即可显示和隐藏按钮。但我尝试了不同的方法,但它无法匹配 innerhtml 文本。好心提醒。

4

1 回答 1

1

我创建了一个可能做你想要的小提琴。

的HTML

<input id="submit" type="submit" />
<span id="validate"></span>​

JavaScript _

/* Success */
var responseText = "<img src=\"./images/success.gif\" alt=\"Correct!\">Can be used";

/* Failure */
//var responseText = "<img src=\"./images/Failed.gif\" alt=\"Incorrect!\">Can not be used";

/* Assign content */    
document.getElementById("validate").innerHTML = responseText || "";

/* Change visibility based on outcome (success or not) */    
if(document.getElementById("validate").innerHTML.test(/success/gmi)) {
  document.getElementById("submit").style.visibility = 'visible';
} else {

    document.getElementById("submit").style.visibility = 'hidden';
}​

使用正则表达式测试结果中是否包含“成功”一词。这样,响应中的 HTML 是什么并不重要。

注意HTML中没有<success\>元素,请使用span 或 div与 class success。

PS。如果可以,您应该只返回单词 true 或 false 或 success 或 failure 而不是 HTML 并在客户端上呈现文本和图像。

于 2012-07-14T23:11:59.043 回答