Nối văn bản vào trường nhập liệu


Câu trả lời:


203

    $('#input-field-id').val($('#input-field-id').val() + 'more text');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="input-field-id" />


5
Vui lòng đọc câu trả lời của tôi cho câu hỏi này là tốt - Thật sự không có lý do gì để phải gọi $('#input-field-id')câu trả lời hai lần ... Rất đơn giản mặc dù - 1
gnarf

2
Tôi cảm thấy như nên có một hàm bổ sung giá trị của đầu vào giống như bạn có thể làm với innerHTML.
Blue Sheep

109

Có hai lựa chọn. Cách tiếp cận của Ayman là đơn giản nhất, nhưng tôi sẽ thêm một lưu ý cho nó. Bạn thực sự nên lưu vào bộ nhớ cache các lựa chọn jQuery, không có lý do gì để gọi $("#input-field-id")hai lần:

var input = $( "#input-field-id" );
input.val( input.val() + "more text" );

Tùy chọn khác, .val()cũng có thể lấy một hàm làm đối số. Điều này có lợi thế là dễ dàng làm việc trên nhiều đầu vào:

$( "input" ).val( function( index, val ) {
    return val + "more text";
});

2
Yêu thích 'tùy chọn khác' - một chút FP hay.
laher

17

Nếu bạn dự định sử dụng thêm một lần nữa, bạn có thể muốn viết một hàm:

//Append text to input element
function jQ_append(id_of_input, text){
    var input_id = '#'+id_of_input;
    $(input_id).val($(input_id).val() + text);
}

Sau khi bạn có thể gọi nó:

jQ_append('my_input_id', 'add this text');

Tôi không thể thêm trình giữ chỗ vào hộp tìm kiếm và muốn sử dụng điều này và sau đó xóa hộp khi người dùng đặt con trỏ vào hộp tìm kiếm. Điều này có khả thi không?
Kevin W.


4

	// Define appendVal by extending JQuery
	$.fn.appendVal = function( TextToAppend ) {
		return $(this).val(
			$(this).val() + TextToAppend
		);
	};
//_____________________________________________

	// And that's how to use it:
	$('#SomeID')
		.appendVal( 'This text was just added' )
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<textarea 
          id    =  "SomeID"
          value =  "ValueText"
          type  =  "text"
>Current NodeText
</textarea>
  </form>

Khi tạo ra ví dụ này, tôi có một chút bối rối. " ValueText " so với> NodeText hiện tại <Không phải .val()chạy trên dữ liệu của thuộc tính giá trị ? Dù sao tôi và bạn tôi sớm muộn gì cũng có thể làm sáng tỏ chuyện này.

Tuy nhiên, vấn đề bây giờ là:

Khi làm việc với dữ liệu biểu mẫu sử dụng .val () .

Khi xử lý dữ liệu chủ yếu chỉ đọc ở giữa thẻ, hãy sử dụng .text () hoặc .append () để nối văn bản.


1
Điều này có thêm điều gì mới để trả lời câu hỏi tốt hơn không? Tôi hiểu rằng bạn chỉ đang thực hiện một phần mở rộng, nhưng điều này đã được giải đáp trong một thời gian dài. Chỉ muốn đảm bảo chất lượng của SO được duy trì.
Kevin Brown,

1
Cảm ơn vì đã quan tâm - tôi thích điều đó. Nhưng bạn nói đúng, không có nhiều điểm mới mà bản chất vẫn giữ nguyên. Tuy nhiên, khi tôi xem xét các câu trả lời hiện tại, tôi cảm thấy có thể có một chút gì đó về phong cách và cách thực hiện. Đầu tiên tôi đã kiểm tra xem một số bài đăng có thể được chỉnh sửa hay không, nhưng cuối cùng tôi nghĩ tốt nhất nên tạo một bài mới. Vì vậy, những gì là mới: * Bạn có thể chạy snipped. * Tiện ích mở rộng giúp ích rất nhiều trên cách viết mã tự tài liệu hóa, trong khi không làm phân tán quá nhiều bản chất.
Nadu

0
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <style type="text/css">
        *{
            font-family: arial;
            font-size: 15px;
        }
    </style>
</head>
<body>
    <button id="more">More</button><br/><br/>
    <div>
        User Name : <input type="text" class="users"/><br/><br/>
    </div>
    <button id="btn_data">Send Data</button>
    <script type="text/javascript">
        jQuery(document).ready(function($) {
            $('#more').on('click',function(x){
                var textMore = "User Name : <input type='text' class='users'/><br/><br/>";
                $("div").append(textMore);
            });

            $('#btn_data').on('click',function(x){
                var users=$(".users");
                $(users).each(function(i, e) {
                    console.log($(e).val());
                });
            })
        });
    </script>
</body>
</html>

Đầu ra nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.