使用Javascript更改输入文本值不会更改显示

时间:2009-12-02 21:00:24

标签: javascript

我正在尝试根据用户操作更改文本input字段的值。我是这样做的:

document.getElementById(textFieldID).value = newValue;

它不是很有效 - 该字段中的原始文本仍保留在屏幕上,不变。但是,当我提交表单时,它的行为似乎确实正确地更改了值。 (并且调试alert确认是的,我正在点击代码并传入正确的字段ID和文本值。)任何人都有任何见解?我需要做些什么才能重绘input元素?

<小时/> 编辑:根据Jeff B的要求,并且根据这似乎让所有人都感到难过,这里有一些相关的代码:


<script LANGUAGE="JavaScript" TYPE="text/javascript">
   function changeText(changeSelector)
   {
      var myindex  = document.getElementById(changeSelector+"Recent").selectedIndex;
      var SelValue = document.getElementById(changeSelector+"Recent").options[myindex].value;
      document.getElementById(changeSelector).value = SelValue;
      document.getElementById("historicalText").value = SelValue;
      document.getElementById("historicalTextSelect").value = changeSelector;
   }
</script>

<input onChange="updateScrollingPreview1217(this); return true;" type="text" id="crawlMsg1217" name="crawlMsg1217" size="60" maxlength="1000" value="">

<select id="crawlMsg1217Recent" name="crawlMsg1217Recent" onchange="javascript:changeText('crawlMsg1217');">
[options go here]
</select>

那个“onChange”处理程序并不是正在搞砸的工作;无论有没有,我都会得到相同的行为。

<小时/> 编辑2:看起来问题是由“JSpell”引起的,这是我们的产品使用的第三方拼写检查程序。 (我被告知客户更喜欢将它用于浏览器中内置的拼写检查;如图所示。)我的测试机上看起来有点配置不当,所以我会尝试将其整理出来并祈祷它会产生问题走开。如果不......应该很有趣。
编辑3:是的。 Fscking JSpell。刚刚为了后代发布了一个完整的答案,明天我会被允许接受它。感谢所有试图帮助的人; + 1's四周,希望我能给予更多。

5 个答案:

答案 0 :(得分:2)

我已经确认罪魁祸首确实是JSpell,而确切的故障点是这一行:

window.onload=jspellInit;

尽管上面的编辑2中提到过祈祷,但确保正确配置并没有使问题消失。这条线对于JSpell的功能是不可或缺的。我不知道JSpell是否总是以这种方式使用Javascript功能,或者是否存在一些完美的因素风暴导致它与我的页面争吵,但这确实是我问题的根源。

感谢所有试图提供帮助的人。在获得正确答案方面,这显然有点不可取,因为它是由一个看起来完全不相关的组件引起的,因此我没有提到,但你至少证实我是(在理由)做正确而不是简单的疯狂。

答案 1 :(得分:1)

页面上的任何其他元素具有与id相同的name属性是什么?

  

Internet Explorer 8及更高版本。在IE8中   模式,getElementById执行   ID区分大小写匹配   仅属性。在IE7模式和   以前的模式,这个方法执行一个   ID上的不区分大小写匹配   和NAME属性,可能   产生意外的结果。 -   http://msdn.microsoft.com/en-us/library/ms536437%28VS.85%29.aspx

尝试提醒您返回的元素的nodeName和id,并确保它是您期望的输入。

答案 2 :(得分:1)

文档的id实际上是“textFieldID”还是“textFieldID”是一个包含要更改的文本输入ID的javascript变量?如果它不是变量,我相信你应该成功:

document.getElementById('textFieldID').value=newValue;

答案 3 :(得分:1)

如果没有上下文,很难调试它,因为你应该使用的代码很好。你可以通过以下方式确认你有正确的节点:

document.getElementById(textFieldID).style.border = "4px solid red";

答案 4 :(得分:0)

使用div元素而不是textfield。我有同样的问题,我用另一个脚本改变的文本域没有得到正确的值。你可以轻松地使用任何div元素,如textfield和一些CSS。你可以使用innerHTML从div获得值。