Не удается изменить / получить значение ввода после открытия с помощью FeatherLight? - PullRequest
0 голосов
/ 06 мая 2018

Я встретил странное поведение. Я пытаюсь получить / установить значение входного текстового поля После Световой ящик FeatherLight закрыт. Я получаю «Undefined» при попытке получить значение текстового поля (снова, после того, как оно было открыто и закрыто с помощью Featherlight). Вы можете увидеть мой исходный код здесь:

https://jsfiddle.net/hgyba4dg/

Единственная релевантная часть - это HTML-код. попробуйте запустить код в JSFiddle и посмотрите значение ввода (значение текстового поля). Вы увидите, что вы получите «неопределенное» после закрытия Featherlightbox. Вот HTML:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
var storeData = null;

function openFeatherLight()
 {
  if (!storeData)
   {
    storeData = $.featherlight($('#MyDiv'), { 'persist' : true , 'beforeOpen' : sayHi , 'beforeClose' : sayBye, 'afterClose' : changeInputValueAfterClose });
   }
  else
   {
    storeData.open();
   }  
 }

function sayHi()
 {
  alert('Value of textbox BEFORE opening FeatherLight LightBox Is: ' + $('#MyTextBox').val());
 }

function sayBye()
 {
  alert('Value of textbox BEFORE CLOSING the FeatherLight LightBox Is: ' + $('#MyTextBox').val());
 }

function changeInputValueAfterClose()
 {
  $('#MyTextBox').val("Bla");
  alert('Current Value Of Input TextBox After Change is: ' + $('#MyTextBox').val());
  alert('We get "Undefined". Why?');
 }

</script>
</head>
<body>
<div id="Shit" style="display: none;">
<div id="MyDiv">
Text
<form id="MyForm">
<input type="text" value="Initial_Value_Set_By_Me_For_Testings" id="MyTextBox">
</form>
</div>
</div>
<input name="Button1" type="button" value="Open FeatherLight" class="AddToMenuButton" onclick="openFeatherLight();">
</body>
</html>

1 Ответ

0 голосов
/ 07 мая 2018

После первого раза элементы DOM остаются отсоединенными (я открываю, чтобы переустановить его однажды ...). Так что $('#MyTextBox') не будет работать потом. Либо сохраните ссылку на него, либо используйте storeData.$content.find('#MyTextBox')

...