JavaScript를 사용하여 텍스트 입력 필드의 값을 얻으려면 어떻게합니까?


873

JavaScript로 검색하고 있습니다. 양식을 사용하지만 내 페이지에서 다른 것을 엉망으로 만듭니다. 이 입력 텍스트 필드가 있습니다.

<input name="searchTxt" type="text" maxlength="512" id="searchTxt" class="searchField"/>

그리고 이것은 내 JavaScript 코드입니다.

<script type="text/javascript">
  function searchURL(){
    window.location = "http://www.myurl.com/search/" + (input text value);
  }
</script>

텍스트 필드의 값을 JavaScript로 가져 오려면 어떻게합니까?

답변:


1768

입력 요소를 양식 요소 안에 래핑하지 않고 입력 텍스트 상자 값을 직접 얻는 다양한 방법이 있습니다.

방법 1 :

document.getElementById('textbox_id').value 원하는 상자의 가치를 얻기 위해

예를 들어 document.getElementById("searchTxt").value;

 

참고 : 메소드 2,3,4 및 6은 요소 콜렉션을 리턴하므로 [whole_number]를 사용하여 원하는 발생을 얻으십시오. 첫번째 요소의 사용 [0], 두 번째 용도 1 등 ...

방법 2 :

document.getElementsByClassName('class_name')[whole_number].value라이브 HTMLCollection을 반환하는 사용

예를 들어 document.getElementsByClassName("searchField")[0].value; 이것이 페이지의 첫 번째 텍스트 상자 경우입니다.

방법 3 :

document.getElementsByTagName('tag_name')[whole_number].value라이브 HTMLCollection도 반환하는 사용

예를 들어, document.getElementsByTagName("input")[0].value; 이것이 페이지의 첫 번째 텍스트 상자 인 경우입니다.

방법 4 :

document.getElementsByName('name')[whole_number].value 또한 라이브 NodeList를 반환합니다.

예를 들어, document.getElementsByName("searchTxt")[0].value; 이것이 페이지에서 이름이 'searchtext'인 첫 번째 텍스트 상자 경우입니다.

방법 5 :

document.querySelector('selector').valueCSS 선택기를 사용하여 요소를 선택 하는 강력한 기능 을 사용하십시오.

예를 들어, 이름으로 선택한 태그 이름으로 선택한 클래스로 선택한 document.querySelector('#searchTxt').value;ID로
document.querySelector('.searchField').value;선택
document.querySelector('input').value;
document.querySelector('[name="searchTxt"]').value;

방법 6 :

document.querySelectorAll('selector')[whole_number].value CSS 선택기를 사용하여 요소를 선택하지만 해당 선택기를 가진 모든 요소를 ​​정적 노드 목록으로 반환합니다.

예를 들어, 이름으로 선택한 태그 이름으로 선택한 클래스로 선택한 document.querySelectorAll('#searchTxt')[0].value; ID로
document.querySelectorAll('.searchField')[0].value;선택
document.querySelectorAll('input')[0].value;
document.querySelectorAll('[name="searchTxt"]')[0].value;

지원하다

Browser          Method1   Method2  Method3  Method4    Method5/6
IE6              Y(Buggy)   N        Y        Y(Buggy)   N
IE7              Y(Buggy)   N        Y        Y(Buggy)   N
IE8              Y          N        Y        Y(Buggy)   Y
IE9              Y          Y        Y        Y(Buggy)   Y
IE10             Y          Y        Y        Y          Y
FF3.0            Y          Y        Y        Y          N    IE=Internet Explorer
FF3.5/FF3.6      Y          Y        Y        Y          Y    FF=Mozilla Firefox
FF4b1            Y          Y        Y        Y          Y    GC=Google Chrome
GC4/GC5          Y          Y        Y        Y          Y    Y=YES,N=NO
Safari4/Safari5  Y          Y        Y        Y          Y
Opera10.10/
Opera10.53/      Y          Y        Y        Y(Buggy)   Y
Opera10.60
Opera 12         Y          Y        Y        Y          Y

유용한 링크

  1. 자세한 내용을 포함한 모든 버그에 대해 이러한 방법의 지원을 보려면 여기를 클릭하십시오.
  2. 정적 컬렉션과 라이브 컬렉션의 차이점 여기를 클릭하십시오.
  3. NodeList와 HTMLCollection의 차이점 여기를 클릭하십시오

IE8 내가 볼 수있는 한 QSA 를 지원하지만 선택기 문자열에서 CSS3 선택기를 지원하지 않습니다.
Fabrício Matté

@ FabrícioMatté 나는 방금 여기 quirksmode.org/dom/tests/basics.html#querySelectorAll을 확인 했는데 그것이 아니라고 나에게 말했다
bugwheels94

흥미 롭군 Win7 용 IE8의 간단한 테스트에 따르면 jsfiddle.net/syNvz/show 및 QSA도 querySelector지원됩니다. jsfiddle.net/syNvz/2/show
Fabrício Matté

1
참조 용으로 저장된 매우 유용한 문서. 감사.
Andy

1
@GKislin 아! 내가 참조. 내가 몰랐 다니 반갑습니다. 그러나 이것을 읽은 후 지금이 편집 내용을 답변에 추가하는 것을 꺼려합니다. 언젠가 나중에, 그것을 피하기 위해 경고와 함께 추가 할 것입니다. 경고해야 할 모든 이유 중 하나는 다음과 같습니다 . 정말 좋은 느낌이 든다면 경고로 편집하거나 원할 때 다른 답변을 추가하십시오 :)
bugwheels94

33
//creates a listener for when you press a key
window.onkeyup = keyup;

//creates a global Javascript variable
var inputTextValue;

function keyup(e) {
  //setting your input text to the global Javascript Variable for every key press
  inputTextValue = e.target.value;

  //listens for you to press the ENTER key, at which point your web address will change to the one you have input in the search box
  if (e.keyCode == 13) {
    window.location = "http://www.myurl.com/search/" + inputTextValue;
  }
}

코드 펜에서이 기능을 참조하십시오.


허용 된 답변의 완성도에 감사하지만이 답변은 JS 코드에서 DOM 텍스트 입력 요소 (텍스트 상자)에 입력 된 값에 액세스하는 것이 유용하다는 것을 알았습니다. 자세한 내용은이 질문의 다른 곳에서 내 대답을 참조하십시오.
Victoria Stuart

17

다음과 같이 입력을 저장할 변수를 만듭니다.

var input = document.getElementById("input_id").value;

그런 다음 변수를 사용하여 입력 값을 문자열에 추가합니다.

= "Your string" + input;


프로그래밍 방식으로 각 속성에 액세스 할 수 있도록 적절한 Javascript 객체가되도록하려면 다음과 같이하십시오. var input = JSON.parse (document.getElementById ( "input_id"). value);
JakeJ

15

다음을 입력 할 수 있어야합니다.

var input = document.getElementById("searchTxt");

function searchURL() {
     window.location = "http://www.myurl.com/search/" + input.value;
}
<input name="searchTxt" type="text" maxlength="512" id="searchTxt" class="searchField"/>

더 좋은 방법이 있다고 확신하지만 모든 브라우저에서 작동하는 것으로 보이며 JavaScript를 작성, 개선 및 편집하려면 최소한의 이해가 필요합니다.


14

또한 다음과 같이 태그 이름으로 호출 할 수 있습니다. form_name.input_name.value; 따라서 특정 형식으로 결정된 입력의 특정 값을 갖게됩니다.


예! 나는이 단순함에 놀랐다. 간단한 계산기의 실현을 살펴 가지고 4stud.info/web-programming/samples/dhtml-calculator.html ,이 자바 스크립트의 functiality에 대한 참조 THER인가를 항상 jQuery를 또는에서 getElementById 사용하기 전에 원인
그리고 리 Kislin

5

이거 한번 해봐

<input type="text" onkeyup="trackChange(this.value)" id="myInput">
<script>
function trackChange(value) {
    window.open("http://www.google.com/search?output=search&q=" + value)
}
</script>

4

Chrome 및 Firefox에서 테스트되었습니다.

요소 ID별로 가치를 얻으십시오.

<input type="text" maxlength="512" id="searchTxt" class="searchField"/>
<input type="button" value="Get Value" onclick="alert(searchTxt.value)">

양식 요소에서 값을 설정하십시오.

<form name="calc" id="calculator">
  <input type="text" name="input">
  <input type="button" value="Set Value" onclick="calc.input.value='Set Value'">
</form>

https://jsfiddle.net/tuq79821/

또한 자바 스크립트 계산기 구현을 살펴보십시오 : http://www.4stud.info/web-programming/samples/dhtml-calculator.html

@ bugwheels94에서 업데이트 :이 방법을 사용할 때이 문제를 알고 있어야 합니다.


3

더 많은 입력 필드가 있으면 onkeyup을 사용할 수 있습니다. 네 개 또는 입력 document.getElementById('something').value이 있다고 가정하면 성가신 것입니다. 입력 필드의 값을 가져 오려면 4 줄을 작성해야합니다.

따라서 키업 또는 키 다운 이벤트시 객체에 값을 저장하는 함수를 만들 수 있습니다.

예 :

<div class="container">
    <div>
        <label for="">Name</label>
        <input type="text" name="fname" id="fname" onkeyup=handleInput(this)>
    </div>
    <div>
        <label for="">Age</label>
        <input type="number" name="age" id="age" onkeyup=handleInput(this)>
    </div>
    <div>
        <label for="">Email</label>
        <input type="text" name="email" id="email" onkeyup=handleInput(this)>
    </div>
    <div>
        <label for="">Mobile</label>
        <input type="number" name="mobile" id="number" onkeyup=handleInput(this)>
    </div>
    <div>
        <button onclick=submitData()>Submit</button>
    </div>
</div>

자바 스크립트 :

<script>
    const data={ };
    function handleInput(e){
        data[e.name] = e.value;
    }
    function submitData(){
        console.log(data.fname); //get first name from object
        console.log(data); //return object
    }
</script>

2

form.elements를 사용하여 양식의 모든 요소를 ​​가져올 수 있습니다. 요소에 ID가 있으면 .namedItem ( "id")로 찾을 수 있습니다. 예:

var myForm = document.getElementById("form1");
var text = myForm.elements.namedItem("searchTxt").value;
var url = "http://www.myurl.com/search/" + text;

출처 : w3schools


2

당신이 경우 inputA의입니다 form당신이 좋아 할 수있는 제출 후 값을 얻으려면

<form onsubmit="submitLoginForm(event)">
    <input type="text" name="name">
    <input type="password" name="password">
    <input type="submit" value="Login">
</form>

<script type="text/javascript">

    function submitLoginForm(event){
        event.preventDefault();

        console.log(event.target['name'].value);
        console.log(event.target['password'].value);
    }
</script>

이 방법의 이점 : 예를 들어 페이지 에 입력 및 정보를 위한 2 form 가 있습니다. senderreceiver

경우 당신은 사용하지 않는 form다음 GET 값에 대해
- 당신은 2 개의 다른 설정할 수 있습니다 id(또는 tag또는 name같은 각 필드에 대해 ...) sender-namereceiver-name, sender-addressreceiver-address, ...
- 당신이 다음 후, 2 입력에 같은 값을 설정하면 getElementsByName(또는 getElementsByTagName.. .) 0 또는 1은 sender또는 receiver입니다. 나중에 formhtml에서 2의 순서를 변경하면 이 코드를 다시 확인해야합니다

경우 사용 form, 당신은 사용할 수 있습니다 name, address...


1
<input id="new" >
    <button  onselect="myFunction()">it</button>    
    <script>
        function myFunction() {
            document.getElementById("new").value = "a";    
        }
    </script>

1

간단한 js

function copytext(text) {
    var textField = document.createElement('textarea');
    textField.innerText = text;
    document.body.appendChild(textField);
    textField.select();
    document.execCommand('copy');
    textField.remove();
}

-2

당신은 가치를 읽을 수 있습니다

searchTxt.value


-3

jQuery를 사용하는 경우 플러그인 formInteract를 사용하여 다음을 수행하면됩니다.

// Just keep the HTML as it is.

<input name="searchTxt" type="text" maxlength="512" id="searchTxt" class="searchField"/>

페이지 하단에이 플러그인 파일을 포함시키고 다음 코드를 작성하십시오.

// Initialize one time at the bottom of the page.
var search= $("#searchTxt).formInteract();

search.getAjax("http://www.myurl.com/search/", function(rsp){
    // Now do whatever you want to with your response
});

또는 매개 변수화 된 URL을 사용하는 경우 다음을 사용하십시오.

$.get("http://www.myurl.com/search/"+search.get().searchTxt, {}, function(rsp){
    // Now do work with your response;
})

https://bitbucket.org/ranjeet1985/forminteract 프로젝트 링크는 다음과 같습니다.

이 플러그인은 양식의 값 가져 오기, 값을 양식에 넣기, 양식의 유효성 검증 등과 같은 여러 목적으로 사용할 수 있습니다. 프로젝트의 index.html 파일에서 코드 예제를 볼 수 있습니다.

물론 나는이 프로젝트의 저자이며 모두 더 나은 것을 만들기를 환영합니다.


7
당신은 아마 이것이 당신의 자신의 개인 플러그인이라고 언급해야합니다.
한나

코드 스 니펫에 오타가 있습니다. 코드의 두 번째 부분에는 큰 따옴표가 없습니다.
Vincenzo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.