如何解决javascript函数返回到表单输入元素不起作用
我有这样的形式输入:<input type=\"text\" name=\"footer_contact_name\" class=\"footer_contact_input\" onfocus=\"this.value=\'\';\" onblur=\"return inp_cl(this);\" value=\"Name\" />
我做了一个js函数:
function inp_cl(input){
if(input.value==\'\'){
return \'Name\';
}
}
问题在于表单输入值不会在onBlur上更改为\“ Name \”!
有什么想法怎么了?
或者,也许大家都对如何使代码尽可能短有更好的建议,或者甚至是完全不同的方法?我只需要将文本“名称”作为默认值,然后在onFocus上消失,如果没有输入任何内容,则再次出现。
谢谢
解决方法
您需要将
return \'Name\';
更改为input.value = \'Name\';
, 有一些解决方案:
解决方案1
onblur的回报并不是您编写函数所想要的。在不更改函数的情况下,可以使用以下方法来更改onblur以利用函数的返回值:
onblur=\"this.value=inp_cl(this);\"
或者您可以修复函数以直接更新输入内容:
function inp_cl(input) {
if (input.value == \'\') {
input.value = \'Name\';
}
}
并将您的onblur属性更改为:
onblur=\"inp_cl(this);\"
onfocus的问题在于,无论其中的内容是什么,它都会擦除输入框的内容,因此,如果已填充输入框,然后离开并返回此字段, \将会消失,因此您需要功能的相反之处,并将您的重点放在该点上:
onfocus=\"inp_bl(input)\"
<script type=\"text/javascript\">
function inp_bl (input) {
if (input.value == \'Name\') {
input.value = \'\';
}
}
</script>
解决方案2
或者,您可以将其连接到javascript中,从而无需在标记中使用onfocus / onblur属性-该脚本会将水印直接连接到所需的输入事件上:
<script type=\"text/javascript\">
watermark = function(input,watermarkText) {
input.onfocus = function () {
if (this.value == watermarkText)
this.value == \'\';
}
input.onblur = function () {
if (this.value == \'\')
this.value == watermarkText;
}
}
new watermark(document.getElementById(\"txtName\"),\"Name\");
new watermark(document.getElementById(\"txtAddress\"),\"Street Address\");
new watermark(document.getElementById(\"txtPostalCode\"),\"Postal Code\");
</script>
<input type=\"text\" id=\"txtName\" />
<input type=\"text\" id=\"txtAddress\" />
<input type=\"text\" id=\"txtPostalCode\" />
现在,您可以在标记中抓取onfocus / onblur属性...,您将获得可重复的代码,这意味着您不必用onfocus / onblur功能污染标记。
解决方案3
到目前为止,我能想到的最简单的方法是使用jQuery和水印插件-如果您已经在使用jQuery,那么没什么大不了的,但是如果您没有使用,它会增加很多您可能不需要的开销。 jQuery非常轻巧,但是它带有一些学习曲线,因为它使用的基于集合的范式并不是命令式程序员习惯的:
$(document).ready(function() {
//This is the important bit...
$(\"#id_of_your_input_control\").watermark(\"String to use as watermark\");
});
然后取消onfocus / onblur属性,因为水印功能将为您提供全部帮助。
对于这种功能,jQuery使事情更具表现力-如果您不熟悉它,那么一定值得查找和熟悉。
附录
解决方案3的好处是,它可以显示水印时处理文本样式等问题,从而看起来像水印,这意味着您不必自己处理所有事情。它还可以正确附加到onblur / onfocus。如果您使用解决方案2,则这是一个幼稚的解决方案-如果您想要onblur和/或onfocus的多个处理程序,则该方法无法正确附加,并且这些事件的所有其他处理程序都将被这些替换-因此从技术上讲,这并不是一种安全的方法,尽管在99.9%的情况下,它仍然可以正常工作。
, 尝试dis dude它的帮助你!
<input type=\"Text\" value=\"Name\" onblur=\"if(this.value==\'\') this.value=this.defaultValue; \"
onfocus=\"if(this.value==this.defaultValue) this.value=\'\'; \">
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。