JavaScript input輸入數值(value)無效的原因和解決辦法


 會碰到這個問題一般是想×別人的網頁導致的,一般來說想控制別人寫的網頁(或者維護一份別人的網頁代碼)碰到需要用JS給input或者select之類的組件賦值的時候一般會直接這樣寫:

  let casess=document.getElementsByClassName('xxxxx')[0];
 
  casess.value='50';

賦值后點擊有時候會報錯有時候不會,一般報錯的情況基本上屬於這份代碼用了某些前端框架,例如Vue之類的,Vue的input弄個雙向綁定啥的,此時我們用原生的JS企圖去控制輸入框的值就會出現無效的情況(明明input上有數字或者字符但是點擊按鈕就是說你沒填內容)。因為此時只是修改了value屬性,沒有觸發input或change事件,導致輸入沒有最終確定。input和change事件默認情況下(作者設計的時候),只有當接收到鍵盤的按鍵(隨便哪個鍵盤的按鍵消息),就會觸發input和change事件,進而把輸入框中的value賦值給預設的相關變量,到這一步才算走完整個設置value的過程。所以如果想給這類加料的輸入框或者選擇框用原生JS賦值,設置vlaue屬性過后就必須手動觸發一下input或change事件。下面是例子:

    input的例子:

let casess=document.getElementsByClassName('input_amo')[0];
//input_amo -- 是input的類
 
casess.value='50';


var event = document.createEvent('HTMLEvents');
event.initEvent("input", true, true);

var eve3nt = document.createEvent('HTMLEvents');
eve3nt.initEvent("blur", true, true);

event.eventType = 'message'; 



casess.dispatchEvent(event);
casess.dispatchEvent(eve3nt);

 

  

如果是select選擇框把"input"改成"change"即可,更多信息請看參考資料。

參考資料:https://blog.csdn.net/russle/article/details/67637500

 

轉載自:https://blog.csdn.net/l198738655/article/details/107026783/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM