亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當以編程方式更改輸入時,on change 的解決方案不起作用

當以編程方式更改輸入時,on change 的解決方案不起作用

喵喔喔 2021-11-25 16:20:22
我已經閱讀了為什么 onchange 不起作用?現在我知道了,onchange 事件僅在用戶更改輸入值時觸發。如果以編程方式更改輸入,則不應觸發。但是我有一個輸入字段,當用戶通過網站內的 Google 地圖小部件更改位置時,該字段會自動填充。當它發生時,我想獲得自動填充的值并填充另一個輸入字段。以編程方式更改輸入時,如何檢測或觸發功能?
查看完整描述

3 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

您可以通過覆蓋輸入value屬性的 setter 函數來實現這一點。因此,每次有人以value編程方式設置時,您的覆蓋設置器都會被觸發:


const input = document.getElementById('input');


const descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(input), 'value');


Object.defineProperty(input, 'value', {

    set: function(t) {

        console.log('Input value was changed programmatically');

        return descriptor.set.apply(this, arguments);

    },

    get: function() {

      return descriptor.get.apply(this);

    }

});


function changeInput() {

  input.value += '1';

}

<input id="input">

<button onclick="changeInput()">Change</button>


查看完整回答
反對 回復 2021-11-25
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

要以編程方式觸發事件,您可以使用事件 API:https : //developer.mozilla.org/fr/docs/Web/API/EventTarget/dispatchEvent


完整示例:


let input = document.getElementById('a')


// Listen the event

input.addEventListener('change', function (evt) {

   console.log('onchange event listener')

});


input.onchange = () => {

console.log('onchange callback')

}


setTimeout(() => {

input.value = "myvalue"


// Trigger the event

var event = new Event('change');

input.dispatchEvent(event);


}, 1000)

<input id="a">


查看完整回答
反對 回復 2021-11-25
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

對于以編程方式更改輸入標簽中的值,您可以使用triggers.


$(document).on('mytrigger keyup', '#input_num', function() {

  var value = $('#input_num').val();

  //alert(value);

  $('#result').val(value)

})


function external_modifier(){

  setTimeout(function(){

    var intValue = parseInt($('#input_num').val(), 10);

    $('#input_num').val(intValue+1).trigger("mytrigger");

    //alert(intValue);

    external_modifier();

  }, 3000);

}


external_modifier();

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<lable> Input: </lable><input id='input_num' type=text value=1 />


<br><br>


<lable> Result: </lable><input id='result' type=text disabled />


查看完整回答
反對 回復 2021-11-25
  • 3 回答
  • 0 關注
  • 267 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號