javascript - Hvordan få tilgang til skjemadata som er nestet inne i div-er (TypeScript)
I følgende kode ønsker jeg å få tilgang til brukerdata skrevet i et skjema hver gang brukeren trykker på enter-tasten etter å ha skrevet inn noen tekstdata i et inputfelt i chat-skjemaet. Har du noen idé om hvordan jeg kan få tilgang til følgende tekstdata ved å bruke TypeScript? Jeg har allerede prøvd med jQuery, men ingen av de testede kodene ser ut til å fungere. Jeg er ny innen webutvikling, men veldig ivrig etter å lære nye ting.
<div id="chat-container">
<div id="search-container">
<input type="text" placeholder="search" />
</div>
<div id="conversation-list">
</div>
<div id="new-message-container">
<a href="#" id="test">+</a>
</div>
<div id="chat-title">
</div>
<div id="chat-message-title">
</div>
<div id="chat-form">
<input id="chat-form" type="text" placeholder="Type a message!" />
</div>
</div>Svar #1
Først bør du bruke semantisk HTML ved å bruke form-taggen i stedet for div, slik at du kan bruke enter-tasten for å håndtere sendingshandlinger. For det andre er det ikke en passende måte å duplisere en id for to forskjellige elementer, fordi id er en unik identifikator for elementet. Til slutt, her er et enkelt skjema som kan være nyttig. HTML:
<form id="my-form">
<input type="text" id="my-input" />
<button type="submit" id="submit-btn">send</button>
</form>
JS :
const formEl = document.getElementById("my-form") as HTMLFormElement;
const inputEl = formEl.querySelector("my-input") as HTMLInputElement;
const submitBtnEl = formEl.querySelector("submit-btn") as HTMLButtonElement;
formEl.addEventListener("submit", e => {
e.preventDefault();
// do what you want
});
inputEl.addEventListener("change", (e:Event|any) => {
console.log(e.target.value)
// do what you want
})
Svar #2
Før svaret: du har duplisert id="chat-form"
<div id="chat-form">
<input id="chat-form"type="text" placeholder="Type a message!"/>
</div>
Eksempel
// select element
const elInput: HTMLInputElement = document.querySelector(`#chat-form-input`)
// add onkeypress listener
document.onkeypress = function (e: any) {
// use e.keyCode
if (e.key === 'Enter') {
// code for enter
console.log(elInput)
console.log(elInput.value)
}
}
<body>
<div id="chat-container">
<div id="search-container">
<input type="text" placeholder="search"/>
</div>
<div id="conversation-list">
</div>
<div id="new-message-container">
<a href="#" id="test">+</a>
</div>
<div id="chat-title">
</div>
<div id="chat-message-title">
</div>
<div id="chat-form-container">
<input id="chat-form-input" type="text" placeholder="Type a message!"/>
</div>
</div>
</body>
