Передача стоимости от начальной загрузки модального содержащих текстовое поле на ASP:TextBox в в formview, который связан
I have googled the hell out of this one and I just cant get any further forward, I have a button sitting in an ASP Formview, that calls a Bootstrap Modal that contains 2 textboxs. When the user clicks on the Enter button on the Modal it should call javascript function to transfer those 2 values to 2 ASP:Textbox's sitting on the Formview. The JavaScript function is as follows:- <pre lang="Javascript"> $('#myModal').on('click', '.btn-primary', function () { var value = $('#chqNumber').val(); var value2 = $('#chqAmount').val(); $('#paymentIDTextBox').val(value); $('#paidAmountTextBox').val(value2); $('#myModal').modal('hide'); });
Модальный выглядит так
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModal" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> <h4 class="modal-title" id="exampleModalLabel">Input parameters</h4> </div> <div class="modal-body"> <div class="form-group"> <label for="recipient-name" class="form-control-label">Cheque Number:</label> <input type="text" class="form-control" id="chqNumber" > </div> <div class="form-group"> <label for="message-text" class="form-control-label">Cheque Value:</label> <input type="text" class="form-control" id="chqAmount"> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal"> Close </button> <button id="paramsOkay" type="button" class="btn btn-primary"> Enter </button> </div> </div> </div> </div>
Что я уже пробовал:
I have put an alert box in the javascript function and that gets the right value, I have attempted to reference the ASP:textbox by client.ID, but cant get it to even pass muster in intelisense <pre lang="Javascript"> mytextbox = document.getElementById("<%= paymentIDTextBox.ClientID %>");
Он жалуется, что paymentIDTextBox не объявлен и может быть недоступен из-за его защиты. Я занимаюсь этим уже 24 часа и действительно нуждаюсь в некоторой помощи ...
Richard Deeming
Попробуйте установить ClientIDMode="Static"
на paymentIDTextBox
и paidAmountTextBox
управления.
Member 10111160
Ричард
Спасибо за это, я совершенно забыл об этом, я борюсь за то, чтобы это было принято intelisense, хотя я установил два элемента управления как статические и использовал следующее в JavaScript :-
$('&л;%= paymentIDTextBox.Идентификатора ClientID %&ГТ;').функция val(значение);
Но intelisense жалуется, что paymentIDTextBox не объявлен, JavaScript действительно не является моей сильной стороной, поэтому я предполагаю, что синтаксис неверен, хотя я гуглил другие примеры, которые, похоже, используют то же самое ...
Member 10111160
Я также попытался сослаться на него по его визуализированному имени :-
$('ctl00$MainContent$FormView1$paymentIDTextBox').val(значение);
По-прежнему нет кости при обновлении целевого текстового поля
Richard Deeming
Имя поля не является допустимым селектором jQuery. Вам нужно будет либо использовать идентификатор - $("#paymentIDTextBox")
- или поиск элемента по имени - $("input[name='ctl00$MainContent$FormView1$paymentIDTextBox']")
Member 10111160
Так что я нахожусь в тупике здесь обработчик JavaScript теперь выглядит так
функция clickHandler() {
var value = $('#chqNumber').val();
var value2 = $('#chqAmount').val();
предупреждение(значение);
оповещения(значение2);
document.getElementById('#paymentIDTextBox').val(значение);
тревога("привет");
document.getElementById('#paidAmountTextBox').val(value2);
document.getElementById('#testbox').val(value2);
alert(document.getElementById('#paidAmountTextBox').val);
$('#exampleModal').modal('скрыть');
}
Первые 2 alert(); показывают правильные значения, которые были введены в 2 текстовых поля модала, по-прежнему ничего не сбрасывается в 2 целевых текстовых поля, хотя, как ни странно, ничего после document.getElementById('#paymentIDTextBox').val(value); в обработчике не выполняется. тревога("привет"); не приходит вообще!
Я поместил текстовое поле за пределы Formview и переместил код alert(document.getElementById('#paidAmountTextBox').val); чуть ниже первых 2 alert (), и это не сработало.
Я совершенно потерялся в том, что, как мне казалось, было бы так просто ....
Richard Deeming
Вы смешиваете прямой доступ DOM (document.getElementById
) с помощью метода jQuery (.val()
).
Вы должны использовать jQuery - $("#paidAmountTextBox").val(value2);
- или прямой доступ к DOM - document.getElementById("paidAmountTextBox").value = value2;
Member 10111160
Итак, у меня есть рабочая (неэлегантная) версия, как показано ниже, единственный способ заставить ее летать также с ClientId = "Static"
функция clickHandler() {
var myChqNumber = $('#chqNumber').val();
var myChqAmount = $('#chqAmount').val();
var myPaymentIDTextBox = document.getElementById('<%= FormView1.FindControl("paymentIDTextBox").ClientID%>');
myPaymentIDTextBox.value = myChqNumber;
var myPaidAmountTextBox = document.getElementById('<%= FormView1.FindControl("paidAmountTextBox").ClientID%>');
myPaidAmountTextBox.value = myChqAmount;
$('#exampleModal').modal('скрыть');
}
Richard Deeming
Если вы установили ClientIDMode="Static"
, вы можете просто использовать идентификатор элемента управления. В этом нет необходимости. FindControl
вызов.
Member 10111160
Ричард, спасибо за подсказки, мне редко приходится кодировать, и все используется только в доме. Но мне действительно нужно вернуться к некоторым основам и перестать просто соединять фрагменты со всей сети в какой-то отвратительный первобытный суп . Большое вам спасибо за то, что нашли время указать мне правильное направление, очень ценю...