输入类型文本字段值未返回确切文本

Posted

技术标签:

【中文标题】输入类型文本字段值未返回确切文本【英文标题】:input type text field value not returning exact text 【发布时间】:2014-12-17 10:10:52 【问题描述】:

我正在使用 C# 在 ASP.NET 中开发应用程序。我正在通过 JQuery 进行所有客户端操作。在我的页面中,我有一个 html 标签控件和 html 输入类型文本控件。我必须向标签显示输入类型文本值。为此,我编写了以下代码: HTML:

<input type='text' id='txtName'/>
<input type='button' id='btnDisplay' value='Display'/>
<p id='lblName'></p>

JQuery 代码:

$("#btnDisplay").click(function()
$("#lblName").html($("#txtName").val());

);

两个单词之间的单个空格可以正常工作。但是如果写“abc xyz”那么它只显示“abc xyz”。我必须显示完全相同的输入类型文本。它应该显示“abc xyz”。

我该怎么做?请帮忙。 http://jsfiddle.net/shubhadeepchat/w19o8pot/

【问题讨论】:

这是一个两步的过程,看看我的回答你需要做这两个步骤 这不一定是一个两步过程。只需要用正确的 HTML 实体替换空格,正如我在答案中所示:D 【参考方案1】:

尝试使用

<pre id='lblName'></pre>       

或者

<pre><p id='lblName'></p><pre>    

DEMO

您也可以通过css查看此解决方案

<!DOCTYPE html>
<html>
<head>
<style>
p 
    white-space: pre;

</style>
</head>
<body>

<p>
This       is some text. This is some text. This is some text.
</p>

</body>
</html>

【讨论】:

【参考方案2】:

正如 A. Rama 所说,HTML 有罪。无论如何,您可能会误导 HTML 用适当的 HTML 实体(即&amp;nbsp;)替换简单的空格。在下面的示例中,正则表达式(replace 的第一个参数)将搜索每个出现的空白并将其替换为实体(第二个参数)。

此解析为 fiddle 演示仅编辑 JS 并保持 HTML 原样:

$("#btnDisplay").click(function()
    $("#lblName").html($("#txtName").val().replace(/\s/g,"&nbsp;"));
);

text() 的使用不起作用,因为我在此 fiddle 中测试过(因为您无法使用 text() 函数更新 p 标记)。

毕竟,即使text() 可以工作,你也不能插入 HTML 标签作为输入,因为这个标签不会被渲染。

【讨论】:

没错!虽然您能否在 .replace() 的括号内解释更多关于正则表达式之类的事情。【参考方案3】:

试试这个:

Demo

#lblName 
    white-space: pre;

【讨论】:

【参考方案4】:

这是一个两步过程

第 1 步:

不要使用.html

.html 会将值作为 html 附加到标签中 所以尝试使用.text(),它将附加确切的值

所以你应该使用

$("#lblName").text($("#txtName").val());

第 2 步:

使用&lt;pre&gt;标签

<input type='text' id='txtName'/>
<input type='button' id='btnDisplay' value='Display'/>
<pre><p id='lblName'></p></pre>

这里是更新的小提琴

http://jsfiddle.net/w19o8pot/3/

如果您不执行第 1 步,那么您的功能将因以下输入而失败

<b> hi </b>

这个问题用更多的例子解释了不同之处

What is the difference between jQuery: text() and html() ?

【讨论】:

【参考方案5】:

val 函数工作正常。

但在 HTML 中,多个空格(即空格、制表符、回车等)几乎总是显示为一个空格。

使用

$("#btnDisplay").click(function()    
  alert($("#txtName").val());
);

你会看到它们应该在的所有空白。

【讨论】:

忘记了右括号,但它可以正常工作。 jsfiddle.net/w19o8pot/4 但我们当然不想要弹出警告框! 这完全是另一个问题。 OP 询问 jQuery 和 input 没有返回正确文本的事实。他们是,这是他选择向他们展示不恰当的方式。我展示了这个。【参考方案6】:

如下使用JS函数,它将保留所有空格:

$("#btnDisplay").click(function()    $("#lblName").html(encodeURIComponent($("#txtName").val()).replace(/%20/g,'&nbsp;'));
);

【讨论】:

【参考方案7】:

使用text 属性而不是html:-

$("#lblName").text($("#txtName").val());

使用 CSS(取自 @Mangesh)答案:-

#lblName 
    white-space: pre;

【讨论】:

@marianoc84 - 好吧当时无法访问小提琴,所以无法正确理解 OP 的问题,但我认为应该使用 text 而不是 html。跨度>

以上是关于输入类型文本字段值未返回确切文本的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 输入字段值未定义

按下返回键时如何通过多个文本字段输入进行选项卡?

选定的值未显示在文本字段选择中 - 材质 UI 反应组件

如何在按下的数字上显示文本字段上星号的确切数量,而不是在按下输入时添加额外的星号?

在网页的文本字段中输入查询字符串,单击提交并返回查询结果

输入表格的文本字段出现问题