微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript函数返回到表单输入元素不起作用

如何解决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 举报,一经查实,本站将立刻删除。