【问题标题】:Input value doesn't display. How is that possible?输入值不显示。这怎么可能?
【发布时间】:2011-08-11 22:37:20
【问题描述】:

这一定是我已经做过或正在做的完全愚蠢的事情,但是我有一个带有 value 属性的输入,根本没有显示:

<div class="input text required">
  <label for="Product0Make">Make</label>
  <input name="data[Product][0][make]" 
         type="text" 
         maxlength="255" 
         value="AC Make" 
         id="Product0Make">
</div>

有人见过这个吗?我是否有某种我只是看不到的错字?不管它值多少钱,这里是生成这一行的 CakePHP 代码:

<?php echo $this->Form->input( 'Product.' . $index . '.make', array( 'default' => $product['Product']['make'] ) ) ?>

我有一个带有少量文本输入、1 个文本区域和 2 个选择的小表单。没有任何文本输入值显示,但其他一切都很好。

任何想法将不胜感激。我什至不敢相信我不得不问这个问题,但这让我很疯狂。

【问题讨论】:

  • 我认为如果您从此 div 中删除所有 classes,问题仍然存在?
  • 我相信您会问这个问题,因为这是非常奇怪的行为。为了让它更加神秘,它可以在我的电脑上运行。您是否尝试重新启动计算机? :)
  • 文本是否可能与背景颜色相同? (你永远不知道!:D)
  • 禁用样式,禁用javascript,然后看看会发生什么。这本身没有意义,必须有一个简单的解释。
  • 尝试用 Shift+F5 刷新(或者只是在 url 栏上按回车键),尤其是在 Firefox 上它可以保留最后一个值。还要尝试禁用 JavaScript - 某些代码可能会在页面加载时处理此问题。

标签: html cakephp cakephp-1.3


【解决方案1】:

啊。我知道这将是非常愚蠢的事情。有一点 Javascript 正在清除数据。清理在其他地方很有用,但我不知道它正在执行,所以追踪起来很痛苦。一旦我在这种情况下阻止了清算,我的价值观就真的出现了。因为我在 web 检查器中查看代码,所以我认为这将是一个“实时”视图,但我想这并不完全正确。

谢谢大家的帮助。

【讨论】:

  • 恭喜您解决了问题。如果您已经解决了自己的问题,您应该接受自己的答案。
  • 我自己才意识到这一点。我以为我快疯了……价值消失了,在任何情况下都无法添加。我花了几个小时倒退。 WOW 大脑现在烤面包了
  • 所以真正的 WTF 是调试工具没有显示实际 DOM 元素的值。我有同样的问题,它发生在 Chrome 和 FF 中。这怎么可能?!
  • 当有人说:“哇,我不傻,我确信这不会发生,但确实会发生。”时,这些就是错误。 99.999999% 的时间,问题应归咎于我们,而不是我们使用的 IDE/浏览器/等,但你知道!我也有类似的情况,用不同的语言。
  • 嗨,伙计们.. 我如何防止这种清除/查看这种清除发生在哪里?
【解决方案2】:

就我而言,这只是 Firefox 的问题。

我通过在输入字段中添加属性autocomplete="off"来解决。

<input type="text" value="value must appear" autocomplete="off"/>

【讨论】:

  • 与 chrome 相同!
【解决方案3】:

我的与 AngularJS

相关

我试图把 both 一个 HTML 值和一个 ng-Model,认为 ng-Model 会默认为 Value,因为我懒得将模型添加到 $scope在控制器中...

所以答案是将该默认值分配给控制器中的 $scope.variable。

【讨论】:

    【解决方案4】:

    对我来说是浏览器缓存。更改 URL 字符串或清除历史记录会有所帮助。

    【讨论】:

    • 在 FF 45.0 上也是如此
    【解决方案5】:

    对于可能遇到相同问题的 Google 员工:如果您在 number 类型的输入字段中有一个非数字值,就会发生这种情况。

    例如:

    <input type="number" value="<? echo $myNumberValue; ?> "/>
    

    即使开发工具说该值存在,这也不会显示任何内容,因为?&gt; 之后的额外空格使其非数字。只需删除多余的空间。

    【讨论】:

    • 谢谢!这是我的问题。我尝试插入的值中有“-”符号。
    【解决方案6】:

    您是否混淆了 $html->input() 的“默认”和“值”参数的用法?

    如果您正在使用 'default' =&gt; $product['Product']['make'] 并且 $this->data 存在,则不会填充该字段。 'default' 参数的目的是在没有表单数据($this->data)存在时显示一个默认值。

    如果你想强制显示一个值,你应该使用 'value' 参数来代替。 'value' =&gt; $product['Product']['make']

    【讨论】:

      【解决方案7】:

      通过 ajax 检索输入值时遇到类似问题,通过浏览器控制台正确设置和验证,但不可见。问题是另一个具有相同 id 的输入字段,并且由于包含多个 JSP 文件而不明显,其中许多具有表单。

      【讨论】:

        【解决方案8】:

        我什至将自动完成设置为“关闭”,但没有任何结果。我最终将下一个 jquery sn-p 放在 document.ready 事件中。

        myForm.find("input").each((i, el) => {
          $(el).val($(el).attr("value"));
        });
        

        另外,这将是纯 es2015 中的等价物:

        document.querySelectorAll("myForm input").forEach(el => {
          el.value = el.getAttribute("value");
        });
        

        如果您没有使用像 Babel 这样的预编译器,并且您需要与旧浏览器版本兼容,请将“(el) =>”更改为“function(el)”。我在我的场景中尝试了这两种代码并且工作正常。

        【讨论】:

          【解决方案9】:

          对我来说,这是因为我使用了 &lt;input&gt; 标签,而没有将它包含在 &lt;form&gt; 标签中

          【讨论】:

            【解决方案10】:

            对我来说,问题是我有多个具有相同 ID 的输入。我可以看到字段中的值,但是通过 javascript 读取它会给出一个空值,因为它正在读取具有相同 id 的不同输入 - 我很惊讶没有 javascript 错误,只是无法读取我可以看到的值表格。

            【讨论】:

              【解决方案11】:

              对我来说,这是错误的数字格式:Chrome 预期为“49.1”,但 ASP.NET 通过了“49,1”,它只是没有显示!

              <input type="number" value="49,1"/>    // Should have been 49.1 !!!
              

              【讨论】:

              • 作为单独的答案发布,因为如果将其作为评论添加到 @chakeda 的答案中,可能会错过。
              【解决方案12】:

              electron 也出现同样的问题:

              我正在使用document.getElementById('_name').value = '' 而不是document.getElementById('_name').setAttribute('value', "") 清除字段。

              所以我猜简单的引用破坏了字段或输入有第二个值隐藏属性,因为我可以重写字段并且它不会改变检查器上的值

              【讨论】:

                【解决方案13】:

                我遇到了与@Rob Wilkerson 相同的问题,onchange() 正在用"" 清理输入的值,所以我改为1。真是个愚蠢的问题!

                HTML
                <input class="form-control inputCustomDay" type="text" id="txtNumIntervalo" onkeyup="changeTipoOptions()" value="1" min="1" />
                
                Jquery
                $("#txtNumIntervalo").val(1);
                

                【讨论】:

                  【解决方案14】:

                  我的与 Angular 有关。

                  我最近遇到了同样的问题,发现当你使用NgIf显示模板时,该模板不会自动使用显示组件中变量的数据。

                  作为快速修复,我使用 ngClass 只是为了隐藏和显示它。

                  【讨论】:

                    猜你喜欢
                    • 2018-11-06
                    • 2017-06-08
                    • 1970-01-01
                    • 2011-01-31
                    • 1970-01-01
                    • 2021-03-26
                    • 1970-01-01
                    • 1970-01-01
                    • 2020-05-25
                    相关资源
                    最近更新 更多