Member 10111160 Ответов: 0

Передача стоимости от начальной загрузки модального содержащих текстовое поле на 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('&lt;%= FormView1.FindControl("paymentIDTextBox").ClientID%>');
myPaymentIDTextBox.value = myChqNumber;
var myPaidAmountTextBox = document.getElementById('&lt;%= FormView1.FindControl("paidAmountTextBox").ClientID%>');
myPaidAmountTextBox.value = myChqAmount;
$('#exampleModal').modal('скрыть');

}

Richard Deeming

Если вы установили ClientIDMode="Static", вы можете просто использовать идентификатор элемента управления. В этом нет необходимости. FindControl вызов.

Member 10111160

Ричард, спасибо за подсказки, мне редко приходится кодировать, и все используется только в доме. Но мне действительно нужно вернуться к некоторым основам и перестать просто соединять фрагменты со всей сети в какой-то отвратительный первобытный суп . Большое вам спасибо за то, что нашли время указать мне правильное направление, очень ценю...

0 Ответов