ค่าการเข้าถึงอินพุต jQuery ที่ซ่อนอยู่


คำตอบ:


347

คุณสามารถเข้าถึงค่าของฟิลด์ที่ถูกซ่อนด้วยval()เช่นเดียวกับที่คุณสามารถทำได้ในองค์ประกอบอินพุตอื่น ๆ :

<input type="hidden" id="foo" name="zyx" value="bar" />

alert($('input#foo').val());
alert($('input[name=zyx]').val());
alert($('input[type=hidden]').val());
alert($(':hidden#foo').val());
alert($('input:hidden[name=zyx]').val());

ทั้งหมดนั้นมีความหมายเหมือนกันในตัวอย่างนี้


11
การแจ้งเตือน ($ ( 'อินพุต [type = ซ่อน] #foo') Val ().); สิ่งนี้จะพบตัวแปรที่ซ่อนอยู่พร้อมกับ id foo การค้นหานี้เฉพาะเจาะจงมากขึ้น
Mohammed Rafeeq

6
การแจ้งเตือน @MohammedRafeeq ($ ('# foo'). val ()); เป็นเพียงเฉพาะ เพราะ id นั้นไม่เหมือนใครใน DOM ดังนั้นจึงมักจะพบเพียงองค์ประกอบเดียวหาก html เป็นไปตามมาตรฐาน นอกจากว่าคุณใช้คำสั่งเพื่อตรวจสอบว่าองค์ประกอบถูกซ่อนหรือไม่
Edwin Stoteler

1
เร็วอะไร $ ('# foo') หรือ $ ('input: hidden # foo')? ฉันสงสัยว่าครั้งที่สองตั้งแต่มีข้อมูลการค้นหาเพิ่มเติมให้ แต่ไม่แน่ใจว่ามันถูกนำไปใช้อย่างไรจึงไม่รู้ว่าความรู้สึกของฉันถูกต้องหรือไม่ แก้ไข: ตกลงฉันมีคำตอบของฉันขอบคุณสำหรับความคิดเห็น Abel, id เท่านั้นคือ #foo เร็วขึ้น
comte

15

มีตัวเลือก jQuery สำหรับ:

// Get all form fields that are hidden
var hidden_fields = $( this ).find( 'input:hidden' );

// Filter those which have a specific type
hidden_fields.attr( 'text' );

type=""จะทำให้คุณมีช่องใส่ทั้งหมดที่ซ่อนอยู่และกรองโดยผู้ที่มีที่เฉพาะเจาะจง


2
โปรดทราบว่าสิ่งนี้จะจับคู่องค์ประกอบที่มีค่าการแสดง CSS เป็น none องค์ประกอบที่มีความกว้างและความสูงตั้งค่าเป็น 0 และองค์ประกอบที่มีบรรพบุรุษที่ซ่อนอยู่ ( api.jquery.com/hidden-selector )
Daniel Liuzzi


6

ในการรับค่าใช้:

$.each($('input'),function(i,val){
    if($(this).attr("type")=="hidden"){
        var valueOfHidFiled=$(this).val();
        alert(valueOfHidFiled);
    }
});

หรือ:

var valueOfHidFiled=$('input[type=hidden]').val();
alert(valueOfHidFiled);

ในการตั้งค่าใช้:

$('input[type=hidden]').attr('value',newValue);


3

หากคุณต้องการเลือกเขตข้อมูลที่ซ่อนอยู่คุณสามารถเลือกผ่านตัวเลือกต่างๆของ jQuery:

<input type="hidden" id="hiddenField" name="hiddenField" class="hiddenField"/> 


$("#hiddenField").val(); //by id
$("[name='hiddenField']").val(); // by name
$(".hiddenField").val(); // by class

อินพุตที่ซ่อนไม่มีคุณสมบัติคลาสสไตล์
Philip Puthenvila

3

หากคุณมี HiddenField asp.net คุณจะต้อง:

วิธีเข้าถึงค่า HiddenField:

$('#<%=HF.ClientID%>').val()  // HF = your hiddenfield ID

ในการตั้งค่า HiddenFieldValue

$('#<%=HF.ClientID%>').val('some value')   // HF = your hiddenfield ID

1

ระวังถ้าคุณต้องการดึงค่าบูลีนจากฟิลด์ที่ซ่อนอยู่!

ตัวอย่างเช่น:

<input type="hidden" id="SomeBoolean" value="False"/>

(อินพุตเช่นนี้จะแสดงผลโดย ASP MVC หากคุณใช้@Html.HiddenFor(m => m.SomeBoolean))

จากนั้นต่อไปนี้จะส่งคืนสตริง'False'ไม่ใช่บูลีน JS!

var notABool = $('#SomeBoolean').val();

หากคุณต้องการใช้บูลีนสำหรับตรรกะบางอย่างใช้ต่อไปนี้แทน:

var aBool = $('#SomeBoolean').val() === 'True';
if (aBool) { /* ...*/ }

-1

วิธีที่เป็นสากลมากที่สุดคือการใช้ค่าตามชื่อ ไม่สำคัญว่าอินพุตหรือเลือกชนิดองค์ประกอบของฟอร์ม

var value = $('[name="foo"]');
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.