Вставка текста в textarea в popup форме
Здравствуйте уважаемые господа. Нужна ваша помощь. Есть на сайте всплывающая popup форма. Хочу сделать так, чтобы по клику на кнопку <a href..... всплывала форма с вставленным произвольным текстом текстом в textarea.
Если вставить в консоль
document.getElementById("d[2]").value = "Johnny Bravo";
то всё работает. Подскажите пожалуйста куда копать ?Вот поле куда нужно вставить <textarea name="d[2]" id="d[2]" required=""></textarea> Кнопка <a class="form-button" href="#" onclick="myFunction()">КНОПКА</a>
<script>
function myFunction() {
document.getElementById("d[2]").value = "Johnny Bravo";
}
</script>
|
Цитата:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
function myFunction() {
document.getElementById("d[2]").value = "Johnny Bravo";
};
</script>
</head>
<body>
<a class="form-button" href="#" onclick="myFunction()">КНОПКА</a>
<textarea name="d[2]" id="d[2]" required=""></textarea>
</body>
</html>
|
Цитата:
Я так понимаю скрипт MyFunction загружается раньше чем всплывающее окно ? Если просто в консоль вставить
document.getElementById("d[2]").value = "Johnny Bravo";
то работает.Если так
function myFunction() {
document.getElementById("d[2]").value = "Johnny Bravo";
};
то пишет undefined. |
Цитата:
|
Цитата:
|
Это из-за квадратных скобок. Можно так:
document.querySelector('form').elements['d[2]'].value |
Цитата:
<script type='text/javascript'>
function myFunction() {
document.querySelector('form').elements['d[2]'].value = "Johnny Bravo";
};
</script>
<a href="#" class="form-button" onclick="myFunction()">КНОПКА</a> Не получается, пишет ошибку test10:360 Uncaught TypeError: Cannot read property 'elements' of null. |
<html>
<body>
<form>
<input name="d[2]" />
</form>
<script>
document.querySelector('form').elements['d[2]'].value = 't'
</script>
</body>
</html>
Ошибки есть? |
Цитата:
|
Мне ваши 404 по ссылке не нужны.
Жмем здесь на примере кода "Просмотреть", и ... ошибки есть? Вот и на сайте своем делайте подобным образом, только не "один к одному" с примером, а используя реальный селектор доступа к своей форме. |
Извиняюсь за непонимание, только недавно начал постигать.:help:
Вот этот код вызывает форму, подскажите пожалуйста как корректно вставить.
<script type="text/javascript">
$(function() {
//Form
var $form_link = $('.form-button'),
$form = $('#form_product');
$form_link.click(function(event) {
event.preventDefault();
if ($form.hasClass('opened')){
$form.removeClass('opened');
if (/iPod|iPad|iPhone/i.test(navigator.userAgent)) {
$('html').removeClass('overflowHidden');
} else {
$(document.documentElement).removeClass('overflowHidden');
}
} else {
$form.addClass('opened');
if (/iPod|iPad|iPhone/i.test(navigator.userAgent)) {
$('html').addClass('overflowHidden');
$('body').addClass('overflowHidden');
} else {
$(document.documentElement).addClass('overflowHidden');
}
}
$('.popup-form').s3IncludeForm('/forma' + '?form', function(){
if($('input[type="text"]').val() == '') {
$('input[type="text"]').parent().find('.placeholder').show();
}
});
return false;
});
$(".close-reveal-modal").on('click touchstart', function(event) {
$form.removeClass('opened');
});
});
</script>
|
KEMPZOR,
В вашем примере по ссылке скрипт выполняется при загрузке кода страницы до загрузки формы - отсюда и ошибка. Прочтите (внимательно!) свой пост№1 и пост№2 от ksa и подумайте - почему у него работает, а у вас - нет. |
Вы задаете один вопрос с описанием проблемы, а код показываете размером с портянку.
Еще раз о том, о чем была суть вопроса - невозможно обратиться к объекту, если в значении селектора по которому производится поиск присутствуют квадратные скобки. Как это можно вылечить используя DOM и было показано. У вас код выше использует jQuey, а значит в нем достучаться до поля с именем d[2] можно так - $('[name="d\\[2\\]"]').val('значение') Что еще пояснять? |
Цитата:
<form>
<input name="d[2]" />
</form>
<script type='text/javascript'>
$('[name="d\\[2\\]"]').val('значение')
</script>
Вот такая конструкция работает. Но вот если по кнопке, то значение как бы видно на долю секунды и потом оно исчезает. |
KEMPZOR,
Цитата:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function () {
$('.form-button').on('click', function () {
$("#d\\[2\\]").val("Johnny Bravo");
});
})
</script>
</head>
<body>
<a class="form-button" href="#">КНОПКА</a>
<textarea name="d[2]" id="d[2]" required=""></textarea>
</body>
</html>
|
Цитата:
|
KEMPZOR,
Цитата:
М.б. перед return false (строка 36 в пост#11) |
Цитата:
Отлично, заработало, низкий вам поклон! |
Цитата:
|
Цитата:
|
Какая разница на чем сайт расположен, я спрашиваю - зачем плодить еще и ID с "проблемным" же именованием? Ну коли есть проблемы с name="d[2]", хотя под JQ, это не проблема, и используется ID, тогда и именуйте его иначе, без использования квадратных скобок. Что нельзя просто id="d2" в таком случае? Какой смысл наступать на грабли второй раз?
|
| Часовой пояс GMT +3, время: 21:15. |