使用jquery在空输入字段中获取占位符的值?

Posted

技术标签:

【中文标题】使用jquery在空输入字段中获取占位符的值?【英文标题】:Get value of placeholder in empty input field with jquery? 【发布时间】:2018-05-01 17:50:11 【问题描述】:

有些奇怪,我很难过。

当我有一个带占位符的输入字段时,例如:

<input id="box1" placeholder="not applicable">

我一直能够获取用户输入,或者如果输入为空,则 jquery 的占位符值如下:

var text = $('#box1').val();

没什么大不了的。使用 jquery .val() 总是成功的。然后我开始在以前工作的应用程序中看到一些代码输出错误,其中空输入未捕获占位符值。

javascript 引擎是否发生了一些变化来解决这个问题?或者如果输入字段为空,是否有新的方法来获取占位符值?

看这个例子:

$('#done').on('click', function()
	  if($('#box3').val() == '')
            var box3 = $(this).data('placeholder');
         else 
        var box3 = $('#box3').val();
        
  $('#output').val(box3);
);

// Clicking the button doesn't capture the placeholder value if empty?
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<input id="box3" placeholder="not applicable">
<br><br>
<button id="done">
Done
</button>
<br><br>
<textarea id="output"></textarea>
<br><br>
<p>
Why doesn't the button click capture the value of the placeholder in this instance, using jquery 3.1.1?
</p>

【问题讨论】:

如果值为空,您想要获取占位符文本吗?根据我的经验,除了 IE,大多数浏览器都不会在占位符值为空时返回它。我只记得这一点,因为我们不得不在我的一些应用程序中明确忽略占位符,因为一些用户使用 IE,它会在提交时发送占位符文本。 占位符也不是data字段,而是attr 是的,如果值为空,我想获取占位符,以改进 UI 功能。如果用户不需要指定或更新,它可以作为一个很好的默认值。我可以使用value= 设置默认值,但是用户必须经历删除输入并重新输入的麻烦。占位符可让您集中注意力并立即输入。 对不起,你是对的。我已经更新了我的评论。谢谢 【参考方案1】:

使用attr('placeholder')。此外,您在 if 语句中使用 this 是错误的。它指的是click 函数的主题。

$('#done').on('click', function()
	  if($('#box3').val() == '')
            var box3 = $('#box3').attr('placeholder');
         else 
           var box3 = $('#box3').val();
        
  $('#output').val(box3);
);

// Clicking the button doesn't capture the placeholder value if empty?
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<input id="box3" placeholder="not applicable">
<br><br>
<button id="done">
Done
</button>
<br><br>
<textarea id="output"></textarea>
<br><br>
<p>
Why doesn't the button click capture the value of the placeholder in this instance, using jquery 3.1.1?
</p>

【讨论】:

谢谢,效果很好。但是,我从来没有在我编写的许多基于 jquery 的应用程序上采取这一步(至少作为一个业余编码员)。我已经使用了 chrome、FF 和 IE,仅使用 val() 就具有相同的效果!什么给了? 总是使用 jQuery 3 吗?也许方法已更新。

以上是关于使用jquery在空输入字段中获取占位符的值?的主要内容,如果未能解决你的问题,请参考以下文章

Python sqlite3 构建带有动态占位符的部分

输入占位符脚本适用于没有 JQuery 的 IE 8 密码字段?

jquery选择多个选项显示和隐藏带有占位符的输入类型号

jquery:获取自定义属性的值

如何更改输入标签占位符的语言?

更改占位符的字体系列