После изменения значения в теге ввода автоматически смоделируйте клавишу ввода - PullRequest
0 голосов
/ 26 мая 2019

Я ввожу данные в скрытый тег ввода в HTML, используя JavaScript. Я могу это сделать, но мне нужно смоделировать ENTER Клавишу на клавиатуре для передачи данных в базу данных, но проблема не может смоделировать клавишу Enter . Я перепробовал множество решений для событий, слушателя и DOM, но ни одно из них не помогло мне.

Я использую DynamoDB, поэтому не имеет значения, какой тип данных мы вводим или как; часть кода, который я пробовал:

function enter1() {
  var keyboardEvent = document.createEvent('KeyboardEvent');
  delete keyboardEvent.which;
  var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? 'initKeyboardEvent' : 'initKeyEvent';
  keyboardEvent[initMethod](
    'keydown', // event type : keydown, keyup, keypress
    true, // bubbles
    true, // cancelable
    window, // viewArg: should be window
    false, // ctrlKeyArg
    false, // altKeyArg
    false, // shiftKeyArg
    false, // metaKeyArg
    13, // keyCodeArg : unsigned long the virtual key code, else 0
    13 // charCodeArgs : unsigned long the Unicode character associated with the depressed key, else 0
  );
  document.getElementById('newdata').dispatchEvent(keyboardEvent);
}

Я пробовал различные решения с использованием JavaScript, JQuery, событий и т. Д. но ни один из них не работает.

<input  className="new" placeholder="add data " type="hidden"
id = "newdata" value="need to add to data base"  />
Wholevalue = " result1 = " + result1 + " Result2 = " + ressult2 + " result3 = " + result3 + "\n";
    alert(wholevalue);
    document.getElementById("newdata").setAttribute("value", wholevalue);

Я ищу способ, когда данные изменяются / вводятся в поле значения с помощью скрипта, он обнаруживает ключ ENTER и передает данные.

1 Ответ

0 голосов
/ 26 мая 2019

Вам придется самостоятельно инициировать событие изменения при каждом изменении значения.Как только уведомление об изменении получено, вы можете отправить нажатие клавиши для ввода.

Я дал приведенный ниже фрагмент кода, который вызывает событие изменения значения, которое, в свою очередь, вызывает событие нажатия клавиши.

Надеюсь, это поможет.

$('#hiddenValue').change(TriggerValueChanged);
$('#hiddenValue').keypress(HandleKeyPress);
		
$('#hiddenValue').val("value change 1").trigger('change');
$('#hiddenValue').val("value change 2").trigger('change');
		
function TriggerValueChanged(element) {
  var event = $.Event( "keypress", { which: 13 } );
  $('#hiddenValue').trigger(event);
}
		
function HandleKeyPress(event) {
  if(event.which == 13) {
    alert(`KeyPress Detected. Event.Which: ${event.which}`);
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="hidden" id="hiddenValue" value="" />
...