Javascript JS设置属性(值)在DOM中不返回
我使用WebSocketd发送数据并从STDOUT检索数据,然后使用JS访问消息:Javascript JS设置属性(值)在DOM中不返回,javascript,jquery,dom,websocket,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.getEle
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')
}
});
但在我手动输入文本之前,这是不起作用的。据我所知,以编程方式设置输入值不会使其聚焦,也不会触发要触发的keyup事件。但是,您可以在WebSocket发送消息后手动触发focus事件或keyup事件。这可能就是你想要的
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').val(event.data);
$("#phone").focus(); //we now focus the input which should fire your focus event listener
};
如果您使用Javascript设置输入值,那么keyup和focus事件自然不会触发。您需要使用Javascript来关注输入 改变
ws.onmessage = function(event) {
$('#phone').attr('value', event.data);
};
到
邮寄
var max=10;
$'sendMessage'。单击函数E{
//模拟发送的消息
$'phone'.attr'value',$'message'.val;
$‘电话’。焦点;
};
$“消息”。按键功能{
ife.keyCode==13{
//模拟发送的消息
$'phone'.attr'value',$'message'.val;
$‘电话’。焦点;
}
};
$'phone'.focusfunction
{
如果$this.val.length>max
{console.log'action fired'
}
}
.keyupfunction{
如果$this.val.length>max{
console.log'action fired'
}
};
旁注,$'phone'.valevent.data是两者都使用的valI的setter版本,同样的结果也是为了确保。当你说它能完美工作时,意味着你在聚焦之前在输入框中看到了值?好吧,根据定义,如果你以编程方式分配输入值,那么不会触发键控事件,也不会触发聚焦。您可以手动发送一个focus/keyup事件,该事件应该可以工作。是的,我在focus之前的输入框中看到了该值
ws.onmessage = function(event) {
$('#phone').attr('value', event.data);
$('#phone').focus();
};