2012-07-25 35 views
52

Tôi đang sử dụng mẫu jquery để tự động tạo nhiều phần tử trên cùng một trang. Mỗi phần tử trông giống như thế nàyJquery nhận giá trị trường biểu mẫu

<div id ="DynamicValueAssignedHere"> 
    <div class="something">Hello world</div> 
    <div class="formdiv"> 
     <form name="inpForm"> 
      <input type="text" name="FirstName" /> 
      <input type="submit" value="Submit" /> 
     </form> 
    </div> 
</div> 

Tôi muốn sử dụng Jquery để xử lý biểu mẫu khi gửi. Tôi cũng muốn hoàn nguyên các giá trị biểu mẫu về các giá trị trước đó của chúng nếu có sự cố. Câu hỏi của tôi là Làm thế nào tôi có thể nhận được giá trị của hộp đầu vào bằng cách sử dụng Jquery? Ví dụ: tôi có thể nhận giá trị của div với lớp "something" bằng cách thực hiện

Tương tự, tôi muốn có thể truy xuất giá trị của hộp văn bản. Ngay bây giờ, tôi đã cố gắng

var text = $(#DynamicValueAssignedHere).children(".formdiv").findnext('input[name="FirstName"]').val(); 

nhưng nó dường như không được làm việc

+3

Lần đầu tiên, javascript đơn giản có thể được dễ dàng hơn: '$ ('đầu vào') [ 0] .form.FirstName.value' sẽ truy cập giá trị của trường – cnlevy

Trả lời

103

Bạn phải sử dụng value attribute để có được giá trị của nó

<input type="text" name="FirstName" value="First Name" /> 

thử -

var text = $('#DynamicValueAssignedHere').find('input[name="FirstName"]').val(); 
.210
+6

@curiouspanda: Chỉ cần một mẹo. Nếu giá trị "tên" là duy nhất, bạn không cần sử dụng $ ('# DynamicValueAssignedHere'). Chỉ cần đi trực tiếp bằng cách sử dụng $ ('input [name = "FirstName"]'). Val().Tôi vẫn thích sử dụng id để xử lý các thành phần. – davidbuzatto

+2

@davidbuzatto - Giá trị tên không phải là duy nhất. Chỉ ID cho div ngoài cùng là duy nhất. Tuy nhiên, dung dịch Dipaks hoạt động. –

39

Nó có thể đơn giản hơn nhiều so với những gì bạn đang làm.

HTML:

<input id="myField" type="text" name="email"/> 

JavaScript:

// getting the value 
var email = $("#myField").val(); 

// setting the value 
$("#myField").val("new value here"); 
+0

Tôi không thể sử dụng ID cho trường vì trang của tôi có thể chứa nhiều biểu mẫu có cùng yếu tố (tôi đang sử dụng bộ lặp tạm thời jquery lates) –

+0

@curiouspanda: Ok, vì vậy bạn có thể làm điều này bằng cách sử dụng Dipaks aproach. Ngay cả khi sử dụng các mẫu lặp lại, tôi nghĩ rằng bạn có thể làm việc với các id duy nhất, có thể thiết lập một tiền tố cho mỗi id thành phần bộ trường. – davidbuzatto

+0

@curiouspanda làm ID động có điểm gì chung không? – undefined

1

nếu bạn biết id của các yếu tố đầu bạn chỉ cần sử dụng này:

var value = $("#inputID").val(); 
2
var textValue = $("input[type=text]").val() 

này sẽ nhận được tất cả các giá trị của tất cả các hộp văn bản. Bạn có thể sử dụng các phương thức như trẻ em, firstchild, vv để trau dồi. Giống như hình thức $ ('form [name = form1] input [type = text]') Dễ dàng hơn để sử dụng ID cho các yếu tố nhắm mục tiêu, nhưng nếu nó hoàn toàn năng động, bạn có thể nhận tất cả các giá trị đầu vào rồi lặp lại với JS.

5

Một cách tiếp cận khác, mà không cần tìm kiếm html lĩnh vực:

var $form = $('#' + DynamicValueAssignedHere).find('form'); 
var formData = $form.serializeArray(); 
var myFieldName = 'FirstName'; 
var myFieldFilter = function (field) { 
    return field.name == myFieldName; 
} 
var value = formData.filter(myFieldFilter)[0].value; 
0

$("form").submit(function(event) { 
 
     ///First Field Value 
 
     var firstfield_value = event.currentTarget[0].value; 
 
    ///Second Field Value 
 
     var secondfield_value = event.currentTarget[1].value; 
 
     
 
     alert(firstfield_value); 
 
     alert(secondfield_value); 
 
     event.preventDefault(); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form action="" method="post" > 
 
<input type="text" name="field1" value="value1"> 
 
<input type="text" name="field2" value="value2"> 
 
</form>

+1

Trong khi đoạn mã này có thể giải quyết câu hỏi, [bao gồm cả giải thích] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho người đọc trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn. Ngoài ra, hãy cố gắng không gắn mã của bạn với các nhận xét giải thích vì điều này làm giảm khả năng đọc của cả mã và giải thích! – FrankerZ

0
// for getting the value from input type text 
var value = $("input[type=text]").val(); 
// for getting the value from by input type name 
var textValue = $("input[name=text]").val() 
Các vấn đề liên quan