ตั้งค่าของฟิลด์อินพุต


คำตอบ:


819

นี่เป็นวิธีหนึ่งในการทำ:

document.getElementById("mytext").value = "My value";

6
ฉันจะมีวิธีที่จะทำให้หุบเขาเป็นโมฆะถ้าผู้ใช้คลิกที่สนาม?
SebastianOpperman

4
ใช่กำหนดตัวจัดการเหตุการณ์ให้กับฟิลด์อินพุตที่ลบค่า onclick ตัวอย่าง: elem.onclick = clearField (); // ที่ชี้ไปยังฟังก์ชันที่ลบฟิลด์ด้วยการตั้งค่าเป็นไม่มีอะไรคล้ายกับคำตอบด้านบน
James

1
สำหรับฉันมันไม่ทำงาน ข้างต้นจะสร้างแอตทริบิวต์ค่าหรือไม่
Dchris

2
ดูเหมือนจะไม่ทำงานหากคุณพยายามเปลี่ยนค่าสำหรับแท็กอินพุตเอง เพื่อชี้แจงหากฉันมีปุ่มที่ควรเปลี่ยนค่าเมื่อมีการคลิกฉันดูเหมือนจะไม่สามารถเปลี่ยนแปลงได้โดย "this.parentNode.getElementByTagName ('อินพุต') style.display = 'none ';" หรือโดยใช้ this.style.display = 'none'; นอกจากนี้ฉันยังพยายามใช้ ".style = display: none; ';" ไม่ประสบความสำเร็จ ...
MahNas92

7
คำตอบนี้และคำตอบอื่น ๆ สำหรับคำถามข้างต้นดูเหมือนจะไม่สนใจว่าจะมีการเปลี่ยนแปลงค่าเริ่มต้น การใช้.value = ...จะเปลี่ยนค่าปัจจุบันเท่านั้น การรีเซ็ตแบบฟอร์ม(ด้วย<input type="reset" />ตัวอย่าง)จะเปลี่ยนค่ากลับไปเป็นแบบดั้งเดิม ในทางตรงกันข้ามsetAttribute("value", ...)ทำงานได้อย่างถูกต้องใน Firefox และ Chrome ค่าเริ่มต้นจะเปลี่ยน แต่ค่าจริงจะเปลี่ยนเฉพาะเมื่อผู้ใช้ยังไม่ได้แก้ไข อย่างไรก็ตามsetAttributeไม่แนะนำเนื่องจากความเข้ากันได้ของเบราว์เซอร์ มีความเป็นไปได้อื่นอีกไหม?
JojOatXGME

55

หากฟอร์มของคุณมีช่องป้อนข้อมูลเช่น

<input type='text' id='id1' />

จากนั้นคุณสามารถเขียนรหัสใน javascript ตามที่ระบุด้านล่างเพื่อตั้งค่าเป็น

document.getElementById('id1').value='text to be displayed' ; 

52

ฉันใช้ฟังก์ชัน 'setAttribute':

<input type="text" id="example"> // Setup text field 
<script type="text/javascript"> 
  document.getElementById("example").setAttribute('value','My default value');
</script>

19
valueควรเข้าถึงได้โดยตรงโดยใช้เครื่องหมายจุด: developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeคุณใช้ set / getAttribute เพื่อจัดการกับค่าเดิมเท่านั้น หลังจากโหลด DOM แล้ว.valueแสดงถึงค่าการทำงานจริงขององค์ประกอบ
Chris Baker

4
@ChrisBaker ฉันจะ +1 คำตอบนี้ถ้าฉันสามารถ ฉันมีแอพของบุคคลที่สามที่สแกนฟิลด์อินพุตเพื่อทำให้แอปพลิเคชันเป็นไปโดยอัตโนมัติ นี่เป็นสถานการณ์ที่ไม่ซ้ำกันซึ่งแอพพลิเคชั่นของลูกค้าจะใช้งานช่องป้อนข้อมูล ฟิลด์อินพุตไม่ถูกรีเซ็ตทันทีหลังจาก postback โดยใช้. value ในฟังก์ชั่นพร้อมเอกสารของฉัน เมื่อฉันมี async postback ที่ตามมาผู้ใช้จะเริ่มต้นมันจะนำค่าอินพุตเหล่านี้กลับมาใช้ใหม่โดยอัตโนมัติเพื่อสิ่งที่พวกเขาคลิกไปก่อนหน้านี้และฉันต้องการหน้านั้นเพื่อ "ลืมพวกเขา" นี่คือซอสวิเศษวิเศษที่ฉันต้องการ ขอบคุณ Pepe และ Chris!
MikeTeeVee

3
ฉันใช้ Yii 2.0 และการตั้งค่า. value = '' โดยตรงจะไม่เรียกใช้การตรวจสอบความถูกต้องของฟอร์มบนฟิลด์ การใช้ setAttribute ('value', '... ') ได้รับการจัดการอย่างเหมาะสม ขอบคุณ!
ekscrypto

setAttributeฉันมีปัญหาแปลกที่แก้ไขได้ด้วย ปัญหาของฉันคือการเปลี่ยนค่าของอินพุตผ่านการเรียกใช้ฟังก์ชันเปลี่ยนอินพุตที่เปลี่ยนแปลงล่าสุดเช่นกัน
SAMPro

ฉันสามารถตั้งค่าเป็นอินพุตโมดอลป๊อปอัพ (ข้อความ) โดยใช้คำตอบนี้เท่านั้น . ค่าไม่ทำงานสำหรับฉัน ขอบคุณ
Ula

19

ลองสิ่งเหล่านี้

document.getElementById("current").value = 12

// or

var current = document.getElementById("current");
current.value = 12

2
อย่าตั้งค่าที่ไม่ใช่ข้อความเป็นฟิลด์ดังกล่าว ถ้าคุณอ่านกลับมาคุณจะอ่าน string (!) ในเบราว์เซอร์บางตัว)
socketpair

18

คำตอบนั้นง่ายจริงๆ

// Your HTML text field

<input type="text" name="name" id="txt">

//Your javascript

<script type="text/javascript"> 
document.getElementById("txt").value = "My default value";
</script>

หรือถ้าคุณต้องการหลีกเลี่ยง JavaScript ทั้งหมด: คุณสามารถกำหนดได้โดยใช้ HTML

<input type="text" name="name" id="txt" value="My default value">

6
น่าอัศจรรย์ที่มีเพียงคนเดียวที่นี่เท่านั้นที่แนะนำให้ใช้valueคุณลักษณะนี้ ...
Algy Taylor

@AlgyTaylor ชื่นชมความพยายามของคุณและขอขอบคุณสำหรับความคิดเห็นที่ยอดเยี่ยมของคุณ
php-coder

15

หากคุณใช้หลายรูปแบบคุณสามารถใช้:

<form name='myForm'>
    <input type='text' name='name' value=''>
</form>

<script type="text/javascript"> 
    document.forms['myForm']['name'].value = "New value";
</script>

3
เหตุผลที่ฉันชอบคำตอบนี้คือคุณใช้แอตทริบิวต์ "name" ของแบบฟอร์มมากกว่า DOM องค์ประกอบ ID ทำไมเพิ่มเขตข้อมูล ID ลงในแบบฟอร์มการป้อนข้อมูลแต่ละแบบเมื่อคุณไม่ต้องการ?
สั่น

@tremor ตกลงกันโดยสิ้นเชิงและนี่เป็นคำตอบแรกที่ฉันพบโดยใช้ "ชื่อ" ไม่ใช่ "id"
อะโวคาโด

8

คำตอบง่าย ๆ ไม่ได้อยู่ใน Javascript วิธีที่ง่ายที่สุดในการรับตัวยึดตำแหน่งคือการใช้คุณสมบัติตัวยึดตำแหน่ง

<input type="text" name="text_box_1" placeholder="My Default Value" />

1
ปัญหานี้คือมันไม่ทำงานสำหรับ Internet Explorer เลย หากคุณรู้ว่าคุณไม่ได้มีลูกค้า IE อยู่แล้วใช่นี่คือคำตอบที่ดีที่สุด
Sifu

2
@Sifu นี่อาจเป็นสิ่งที่ดีที่จะทำแม้ว่าคุณจะรู้ว่าคุณมีไคลเอนต์ IE (อาจจะนอกเหนือไปจากโซลูชั่น JavaScript) เพราะมันจะตั้งค่าอีกครั้งเมื่อฟิลด์ว่างเปล่า
ahruss

1
@Sifu เมื่อ IE ไม่สนับสนุนแอตทริบิวต์ตัวยึดใช้ IE และไปที่ www.1c3br3ak3r-multimedia.ca และดูที่แถบค้นหาจะใช้แอตทริบิวต์ตัวยึด
RWolfe

1
@Jdoonan เมื่อไม่นานมานี้จริง ๆ แล้ว - caniuse.com/#feat=input-placeholder placeholder ได้รับการสนับสนุนใน IE10 ขึ้นไป
danwellman

6

มันง่ายมาก ตัวอย่างคือ:

<input type="text" id="example"> // Setup text field 
<script type="text/javascript"> 
var elem = document.getElementById("example"); // Get text field
elem.value = "My default value"; // Change field
</script>

4
document.getElementById("fieldId").value = "Value";

หรือ

document.forms['formId']['fieldId'].value = "Value";

หรือ

document.getElementById("fieldId").setAttribute('value','Value');

3
setAttribute ( 'ค่า', 'ราคา'); ไม่ได้ตั้งค่าที่มองเห็นได้ในกล่องข้อความสำหรับฉันบน Chrome
เคอร์ติส

1
<form>
  <input type="number"  id="inputid"  value="2000" />
</form>


<script>
var form_value = document.getElementById("inputid").value;
</script>    

คุณยังสามารถเปลี่ยนค่าเริ่มต้นเป็นค่าใหม่ได้

<script>
document.getElementById("inputid").value = 4000;     
</script>


0

คุณสามารถลอง:

document.getElementById('theID').value = 'new value';

3
การตั้งค่าใหม่ไม่ได้เป็นการตั้งค่าเริ่มต้น ดังนั้นวิธีนี้จึงไม่สามารถแก้ไขปัญหาได้ คุณควรพูดว่าเป็นความคิดเห็นของโพสต์เมื่อคุณได้รับชื่อเสียงเพียงพอ
Daniel Cheung
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.