如何重用 JavaScript 函数进行表单输入控制
How to reuse JavaScript function for form input control?
我有一个完全按照我想要的方式工作的输入字段,但是,我有许多字段重复相同的代码。 是否可以调用 JavaScript 函数并获得相同的结果?
这是我目前工作的html:
<input type="text" name="lname" value="Last Name" style="color:gray;"
onblur="if((this.value == 'Last Name') || (this.value == ''))
{this.value = 'Last Name'; this.style.color= 'gray';}
else {this.style.color= 'black';}"
onfocus="if((this.value == 'Last Name') || (this.value == ''))
{this.value = ''; this.style.color= 'gray';}
else {this.style.color= 'black';}"
onselect="this.style.color= 'black';"
onclick="this.style.color= 'black';"/>
但我希望能够做这样的事情:
<input type="text" name="lname" value="Last Name" style="color:gray;"
onblur="onBlurAction()";
onfocus....
etc....
</input>
<script>
function onBlurAction()
{
if((this.value == 'Last Name') || (this.value == ''))
{this.value = 'Last Name'; this.style.color= 'gray';}
else {this.style.color= 'black';}
}
function onFocusAction....
etc....
</script>
在你的函数中,this
引用window
全局变量,你应该this
作为参数传递:
onblur="onBlurAction(this)"
虽然函数将是这样的:
function onBlurAction(el)
{
if (el.value == 'Last Name' || el.value == '') {
el.value = 'Last Name';
el.style.color = 'gray';
} else {
el.style.color = 'black';
}
}
另一种方法是不更改函数,而是以这种方式使用 onblur
:
onblur="onBlurAction.call(this)"
可以使用一个函数作为多个事件的处理程序。
<input type="text" name="lname" value="Last Name" style="color:gray;"
onblur="onBlurAction();" onfocus="onBlurAction();" .../>
这将需要onBlurAction
模糊和对焦事件。您可以为onselect
和onclick
做类似的事情。
你能不使用占位符属性吗?
编辑:
按照托马斯·厄普顿(Thomas Upton)提到的操作是行不通的,因为他使用的是.value属性。一旦用户输入内容,该值就会更改,因此该函数将无法正确检查(默认)值,因为它已被更改。
他可以使用占位符属性来帮助函数。像这样:
<input type="text" name="lname" value="" placeholder="Last Name" style="color:gray;"
onblur="javascript:onBlurAction(this.name);"
onfocus="javascript:onBlurAction(this.name);"
onselect="javascript:onBlurAction(this.name);"
onclick="javascript:onBlurAction(this.name);">
function onBlurAction(elname)
{
value = document.getElementById(elname).getAttribute("placeholder");
if ((this.value == value) || (this.value == ''))
{
this.value = value;
this.style.color = 'gray';
}
else {
this.style.color = 'black';
}
}
他将元素名称传递给函数,此函数将获取占位符值。这将适用于他的所有文本输入,按照他的意愿重用该函数。在这里测试:http://fiddle.jshell.net/6qMj8/1/
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何在submit to sightly时将表单输入值作为参数传递给WCMUsePojo
- 单击鼠标,用MySQL数据填充html表单输入字段
- 从HTML表单发布blob的表单输入类型是什么
- 在不使用PHP的情况下将表单输入值获取到Javascript中
- 在Chrome中重新加载页面后清除表单输入值
- CasperJS填充表单-输入名称有方括号
- 表单输入字段随着溢出的文本而增长
- Highcharts:根据表单输入动态显示数据
- 如何在为表单输入分别处理$(this)和$时编写DRY代码
- 如何从AngularJS表单输入中生成一个永久变量
- 将表单输入保存到txt,弹出结果,不更改页面
- 在表单输入字段中创建默认值
- 如何根据提交表单时下拉框中的值禁用html表单输入框
- 使用jQuery延迟表单输入,并在延迟后在同一页面上显示结果
- Jquery无法找到给定表单id的表单输入
- 如何使用javascript验证在表单输入中避免负值、浮点值和十进制值
- 对表单输入执行计算
- Javascript 重复表单输入
- 使用 JavaScript 计算并添加表单输入的值