在屏幕上显示javascript验证消息而不是提示消息?
我正在使用struts1.3.8。我使用struts ValidatorPlugIn来生成客户端和服务器端验证消息。
现在,客户端JavaScript由验证器插件生成。如果有任何验证错误,它将显示在警报消息中。但我想在文本字段之外显示它们。
我现在还在使用警报消息。但现在需求已更改。我试过但没用...
怎么办?
这是插件在屏幕上显示javascript验证消息而不是提示消息?
`enter code here` function jcv_handleErrors(messages, focusField) { if (focusField && focusField != null) { var doFocus = true; if (focusField.disabled || focusField.type == 'hidden') { doFocus = false; } if (doFocus && focusField.style && focusField.style.visibility && focusField.style.visibility == 'hidden') { doFocus = false; } if (doFocus) { focusField.focus(); } } alert(messages.join('\n')); }
没有具体的信息,所有我真的可以认为是以下的变化而产生的代码:
window.alert = function(message){
console.log(message);
}
这只是确保传递给alert()
的任何消息都会被传递给console.log()
。
你可以,而是针对消息的特定元素:
window.alert = function(message) {
var output = document.getElementById('output'),
newTextContainer = document.createElement('p'),
text = document.createTextNode(message);
newTextContainer.appendChild(text);
output.appendChild(newTextContainer);
}
JS Fiddle demo。不过,使用其中任何一种方法都会破坏页面中您的alert()
函数的使用。所以我建议,相反,创建一个新的函数(后面的例子)(正上方)并调用该函数,而不是覆盖alert()
。
至于创建自定义函数来处理你的提醒,以及指定的特定元素到新的“警告”应附加:
function newAlert(message, elem) {
// message is a string containing the message to display.
// elem is the id of the element into which the message should be displayed,
// defaults to an id of 'output' if no element is specified.
var output = elem ? document.getElementById(elem) : document.getElementById('output'),
newTextContainer = document.createElement('p'),
text = document.createTextNode(message);
newTextContainer.appendChild(text);
output.appendChild(newTextContainer);
}
响应编辑从OP质疑,如下所示:
下一页再次提交我要覆盖以前的错误消息的形式。不会两次显示相同的消息。
有几种方法可以做到这一点,假设您只想显示最后一条错误消息,而不是附加这些错误消息;在第一个例子中我使用while
循环以除去output
元件的firstChild
,并且当空,追加新的错误消息:
function newAlert(message, elem) {
var output = elem ? document.getElementById(elem) : document.getElementById('output'),
newTextContainer = document.createElement('p'),
text = document.createTextNode(message);
while (output.firstChild){
output.removeChild(output.firstChild);
}
newTextContainer.appendChild(text);
output.appendChild(newTextContainer);
}
另一种方法是让在output
元素第一款元素的引用(如果存在的话,否则,创建一个),然后简单地覆盖在该元素的文本:
function newAlert(message, elem) {
var output = elem ? document.getElementById(elem) : document.getElementById('output'),
textContainer = output.getElementsByTagName('p')[0] || output.appendChild(document.createElement('p'));
if (textContainer.firstChild){
textContainer
.firstChild
.nodeValue == message;
}
else {
textContainer
.appendChild(document
.createTextNode(message));
}
}
非常感谢大卫......它像任何事情一样工作......我得到了我期待的...... – 2012-07-05 11:35:05
非常受欢迎;我很高兴得到了帮助! =) – 2012-07-05 11:35:58
嗨大卫,我们可以覆盖错误信息? – 2012-07-05 12:28:19
,你能否告诉我们处理警报的代码的一部分? – 2012-07-05 11:02:48