dosya97
@dosya97
Fullstack web-developer

Как изменить атрибут value в полях с помощью jQuery и отправить?

Доброго времени суток. Хотел организовать автокомплит самостоятельно. Так как хотел кастомности. Так вот ввожу в input имя и выполняется ajax запрос на сервер. Если найдено несколько пользователей то вывести список а если такой пользователь единственный то вписать в этот input(Отображаемый текст) Имя + Фамилия, а в value которое будет отправляться на сервер(форма) должен лежать id или username пользователя(идентификатор). В общем это должен быть усложненный input у которого 2 значения:
1) Отображаемый текст
2) Само значение.
Это примерно как:
<select><option value="ID">DISPLAYEDVALUE</option></select>

Я так понял что jquery не удается поменять сам DOM(он лишь может визуально поменять значения, но на сервер посылать не может)
Вот код:
<div class="form-group row">
        <label for="inputResponse" class="col-sm-2 col-form-label">Ответственный</label>
        <div class="col-sm-10">
                <fieldset class="fieldResponse">
                        <input name="response" type="text" class="form-control" id="inputResponse" placeholder="Ответственный" value="1" autocomplete="off">
                        <ul id="response_results" class="list-unstyled"></ul>
                </fieldset>
        </div>
</div>

$('#inputResponse').on("input",function(e){
			$.ajax({
				type: "get",
				url: "{% url 'response_ajax' %}",
				data:{'response': $(e.target).val()},
				// dataType: "json",
				success: function(content){
					$('#response_results').html(content.content);
					if(content.content.exact){
						$(".fieldResponse").prop("disabled",true);
						$("#inputResponse").val(content.content.exact);
						// $("#inputResponse:text").val(content.content.full_name);
						$("#inputResponse").attr("value",content.content.exact);
						//$("#inputResponse").val(1);
						$('#response_results').html("<a href='#' class='clear_response'>стереть</a>");
						$(".clear_response").click(function(){
							$(".fieldResponse").prop("disabled",false);
							$("#inputResponse").val("");
							$("#inputResponse").attr("value","");
							$('#response_results').html("");
						});
					}
				},
			});
		});

Спасибо
  • Вопрос задан
  • 670 просмотров
Решения вопроса 1
ну почему же "не удается поменять сам DOM"? jQuery обычно только этим и занимается :)
а на сервер он может их послать одним из вариантов
- либо дополнительным ajax-вызовом (на сервере тогда нужен обработчик, который будет принимать переданные данные и сохранять их куда-то)
- либо надо завернуть select в форму (...) с соответствующими свойствами, и добавить ей (форме) кнопку "отправить" (). опять же, на сервере кто-то должен данные принимать и складывать куда надо.

но вот с тем, чтобы принудительно распахнуть селект из скрипта - тут не всегда все хорошо ( stackoverflow.com/questions/10453393/how-to-open-t... ), и поэтому проще использовать какой-нибудь jQuery.autocomplete, чем воевать с ветрянными мельницами -)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Rocket Брянск
от 60 000 до 100 000 ₽
22 мая 2024, в 17:27
1000 руб./за проект
22 мая 2024, в 17:25
600 руб./за проект