为什么输入对象的value属性不包含值



在第一种方法中,使用KeyBoardEvent实例,在事件处理程序fCOULD下面检索键盘按键后的字符,如下所示:

<form action="#" id="sampForm" >
            <input id='charInput' type='text'>
            <p id="KeyData">Key press data here</p>
</form><br>
document.getElementById('charInput').onkeypress = f;
function f(event) {
  var char = getChar(event || window.event)
  if (!char) return false; // Special Key Pressed
          document.getElementById('keyData').innerHTML = char + " was pressed";
                          return true;
}       
function getChar(event) {
  // event.which returns the key pressed
  if (event.which == null) {
        // Return the char if not a special character
        return String.fromCharCode(event.keyCode); // IE
  } else if (event.which!=0 && event.charCode!=0) {
        return String.fromCharCode(event.which);   // Other Browsers
  } else {
        return null; // Special Key Pressed
  }
}

在第二种方法中,使用HTMLInputElement实例的value属性,在回调函数fCOULD NOT下检索按键后的字符,

<form action="#" id="sampForm" >
            <input id='charInput' type='text'>
            <p id="KeyData">Key press data here</p>
</form><br>
document.getElementById('charInput').onkeypress = f;
function f(){
    document.getElementById('KeyData').innerHTML =  document.getElementById('charInput').value  + 'is pressed';
    return true;
}

在第二种方法中,当我按下第一个键盘字符时,为什么document.getElementById('charInput').value是空字符串?如何在事件处理方法中解决此问题?

注意:w3.org/TR/DOM-Level-2-Events/Events.html——实现Event接口的对象通常作为第一个参数传递给事件处理程序。在上面的代码中,我在第二种方法中指定了回调而不是事件hanfler。因为没有说明onkeypress属性值必须是事件处理程序的文档。

当用户按下键盘上的某个键时,会发生onkeypress事件。在那个时间点,用户输入的键值是,而不是放在文本框中。因此,第一次输入键时,document.getElementId('charInput').value会返回文本框的当前值,该值为空。下次按下某个键时,它将显示在文本框中输入的第一个值。请注意,document.getElementId('charInput').value显示的是文本框的当前值,而不是按下的关键字符。此外,函数f()之后应该有一个断开,因此它应该是:

function f() {
    document.getElementById('KeyData').innerHTML = document.getElementById('charInput').value  + 'is the content of charInput';
    return true;
}

您缺少function f 的左括号

function f(){
 // your code
}

代码很好。函数f()缺少括号"{"。还要确保此代码被<script>标记包围。还要使用onkeyup而不是onkeypress。

相关内容

  • 没有找到相关文章

最新更新