textfield.value =“”无法在Firefox中运行,但可在Safari / Chrome中使用

时间:2010-11-16 16:33:41

标签: javascript jquery firefox jquery-ui safari

我有一个删除文本字段(称为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,因为这是网络界面的一部分。

3 个答案:

答案 0 :(得分:2)

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

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

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

$(target).val("");

答案 1 :(得分:1)

$(target)[0].value = 'blah'; 

$(target).val('blah')

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

答案 2 :(得分:0)

正确的语法是

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

假设'termsField'是id,如上所述。