【问题标题】:textfield.value = "" not working in Firefox, but works in Safari/Chrometextfield.value = "" 在 Firefox 中不起作用,但在 Safari/Chrome 中起作用
【发布时间】:2010-11-16 16:33:41
【问题描述】:

我有一个删除文本字段(称为 termsField)并使用 JQuery 清空 div 中的文本(称为 definitionContainer)的函数,当用户单击按钮时我会激活该函数。

function clearText(target){
    var definitionDiv = document.getElementById("definitionContainer");
    $('#definitionContainer').empty(); //empty the div
    termsField.value = ""; //delete the text field
    $(target).val = "";

这是我的文本字段和按钮的 HTML:

<input id="termsField" type="search" autocorrect="off" 
     placeholder="Type something!" maxlength="2048">

<INPUT type="image" name="Clear" alt="Clear Search" src="clearX.png" 
    height="22" width="22" onClick="clearText(this)">

有谁知道为什么清除 definitionDiv 在 Firefox 中有效但 termsField.value = ""; 无效?这两种方法在 Safari 和 Chrome 中都可以正常工作。我不介意测试 IE,因为这是 Web 界面的一部分。

【问题讨论】:

  • 1) termsField 是在哪里定义的? 2)termsField 是定义容器中的一个节点吗?
  • 你是如何声明 termsField 的?
  • termsField 是文本字段的 id。 termsField.value = "";在 Safari/Chrome/iOS/Android 中运行良好,但在 Firefox 中运行良好
  • 这就是为什么我更喜欢提出一些问题而不是很快回答;)

标签: javascript jquery firefox jquery-ui safari


【解决方案1】:

您尚未显示变量termsField 的定义位置。也许您还没有定义它,这很可能是问题所在,因为并非所有浏览器都会使用与文档中元素的 ID 对应的属性来污染全局对象(由 IE 引入)的可怕事情。以下对我来说很好:

var termsField = document.getElementById("termsField");
termsField.value = "";

另外,虽然这与termsField的问题无关,但jQuery的val()是一个方法:

$(target).val("");

【讨论】:

  • 我做了你的改变。即使我注释掉 //$(target).val = ("");它仍然可以在 Safari/Chrome 中使用(删除文本字段和 div),就像那行没有做任何事情一样。
  • 是的,该行是多余的,因为image 类型的输入没有其值的可视化表示。
  • 那行得通...您输入的第二个代码。非常感谢。此外,您对在文档中使用 ID 表示变量的解释非常好。我没有意识到这是一个大问题,但这是有道理的。
【解决方案2】:
$(target)[0].value = 'blah'; 

$(target).val('blah')

您也没有在任何地方定义termsField。如果您还没有在外部范围内,请定义它。

【讨论】:

  • termsField 不是变量,它只是我的 HTML 中文本字段的 ID,它在 Safari 中的工作方式很好
  • 如果termsField 未定义且代码有效,则浏览器 存在问题。请按照逻辑做事并定义它。
  • 嗯,这是浏览器的一个长期存在的功能。多年来,IE 一直在使用与元素 ID 对应的属性污染 JavaScript 全局对象。 WebKit 复制了它。
  • @Tim Down - 是的,我怀疑就是这样。仍然不应该那样做。
【解决方案3】:

正确的语法是

document.getElementById('termsField').value = ""

假设 'termsField' 是 id,如您在上面指定的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 2018-04-20
    • 2014-04-03
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多