javascript - Jquery 在点击和聚焦时切换输入可见性

标签 javascript jquery html

您好,我正在处理一个也使用占位符文本的简单表单。我使用 JQuery 而不是 html 属性来实现此行为,主要是因为占位符输入还会向用户显示错误消息,这些消息的样式需要与纯占位符文本不同。

现在表单的行为是这样的。

  • 点击输入隐藏占位符输入并将焦点设置在主输入字段上。
  • 如果用户输入了数据,则不会显示占位符。

现在这一切都很好,但是当用户按下 TAB 键改变焦点时,以上都不会发生。

这里是相关的 JQuery 代码和 HTML:

$("#plh_username").click(function(){
	$(this).hide();
	$("#username").focus();
});

$('body').click(function(e){
	var target = $(e.target);

	if(!target.is('#plh_username')) {
		if ( $("#username").val() == "" ){
			$("#plh_username").show();
		}
	}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="input" id="plh_username" class="inp_placeholder" value="Username" />
<input type="text" name="username" id="username" value="" />

当用户选择一个输入字段而不实际点击一个输入字段时,如何实现相同的效果?

最佳答案

您可以尝试使用 .focus().focusout()而不是 .click()

$("#plh_username").focus(function(){
    $(this).hide();
    $("#username").focus();
});

$('#username').focusout(function(){
    if ($(this).val() === ""){
        $("#plh_username").show();
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="input" id="plh_username" class="inp_placeholder" value="Username" />
<input type="text" name="username" id="username" value="" />
<input value="Press tab or shift+tab" />

引自documentation :

Elements with focus are usually highlighted in some way by the browser, for example with a dotted line surrounding the element. The focus is used to determine which element is the first to receive keyboard-related events.

关于javascript - Jquery 在点击和聚焦时切换输入可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34067621/

相关文章:

javascript - jquery问题: how to break and reset setinterval?

javascript - 在 mousedown 元素之外捕获 mouseup 的最佳方法

javascript - 使用 Javascript/Jquery 显示计时器

jquery - 最大高度不起作用

javascript - 在基于 iframe 的文本编辑器中禁用 Firefox 和 Chrome 拼写检查

javascript - 使用 Node Express 应用程序在 Zabbix api 上提取数据

javascript - 如何在 esri map 上制作我自己的缩放按钮

javascript - 在搜索之前隐藏所有元素的搜索栏

android - 为什么我的响应式 CSS 代码在各种设备上的输出很奇怪?

php - 如何获取根据用户选择创建的文本框的值