javascript - JS 设置 attr(value) 不会在 DOM 中返回

标签 javascript jquery dom websocket

我使用 WebSocketd 发送数据并从 STDOUT 检索数据,然后使用 JS 访问消息:

   var ws = new WebSocket('ws://ip-address:8081/');
   ws.onopen = function() {
        document.getElementById("phone").style.background= '#cfc';
      };
   ws.onclose = function() {
        document.getElementById("phone").style.background= '#fcc';
   };
   ws.onmessage = function(event) {
          $('#phone').attr('value',  event.data);
   };

它工作得很好,然后我尝试了以下方法来测试设置websocket连接后#phone的值是否会改变

var max = 10;
$('#phone').focus(function(e)
{  
  if ($(this).val().length > max) 
  { alert('action fired') 
  }
})
.keyup(function(e){  
  if ($(this).val().length > max) { 
      alert('action fired') 
  }
});

但这只有在我手动输入文本后才会起作用

最佳答案

如果您使用 Javascript 设置 input 的值,则 keyupfocus 事件自然不会触发。您需要使用 Javascript 将焦点放在输入上。

改变

ws.onmessage = function(event) {
      $('#phone').attr('value',  event.data);
};

ws.onmessage = function(event) {
      $('#phone').attr('value',  event.data);
      $('#phone').focus();
};

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="phone"/>
<p/>
<textarea id="message">
</textarea>
<br/>
<button id="sendMessage">Send</button>
<script>
var max = 10;
$('#sendMessage').click(function(e){
   //simulating a sent message
    $('#phone').attr('value', $('#message').val());
    $('#phone').focus();
});
$('#message').keypress(function(e){
  if(e.keyCode==13){
  //simulating a sent message
    $('#phone').attr('value', $('#message').val());
    $('#phone').focus();
  }
});
$('#phone').focus(function(e)
{  
  if ($(this).val().length > max) 
  { console.log('action fired') 
  }
})
.keyup(function(e){  
  if ($(this).val().length > max) { 
      console.log('action fired') 
  }
});
</script>

关于javascript - JS 设置 attr(value) 不会在 DOM 中返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51487392/

相关文章:

javascript - 三个依赖下拉菜单问题

javascript - 在某些情况下无法获得表单 ID 的值

javascript - 在父网页的 iframe 中运行 JavaScript

javascript - 你的 gnome-shell-extension 如何捕获关键焦点?

javascript - 定位出现在包含特定类的页面上的 div ID - CSS 还是 jQuery?两个都?

javascript - 运行 Firebase 函数测试时出现 "path"中的类型错误

javascript - 使用关闭按钮切换 Bootstrap 选项卡

Javascript: `document` 的属性是否包含 `body` 之外的节点?

javascript - 用鼠标在 JavaScript 中绘制一个矩形

javascript - 我该如何优化这段代码?