сравнить две переменные в операторе if javascript - PullRequest
0 голосов
/ 13 февраля 2019

Я надеялся, что дружелюбная душа поможет мне решить мою проблему с JavaScript здесь.

Я пытаюсь немного узнать о JavaScript и кодировании в целом, делая это, я пытаюсь сделать свою собственную всистема домашних аукционов, и для этого я не хочу, чтобы люди могли делать ставки на тот же или ниже товар, поэтому для этого я хочу отключить кнопку отправки и т. д.

Моя проблема в том, что я начал работать с идентификаторами и узнал, что если у меня есть несколько элементов с одинаковым идентификатором, это не будет работать, поэтому я начал работать с классом.

Я сделал следующее, что некажется, работает по какой-то причине, он не будет сравнивать два числа: (

var inputOne = document.getElementsByClassName('form-control new_bid');
var inputTwo = document.getElementsByClassName('form-control old_bid');
setInterval(function() {
  if (inputOne >= inputTwo)
    $(":submit").removeAttr("disabled");
  else
    $(":submit").attr("disabled", "disabled");
}, 1);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class='form-control old_bid' id="current_bid" name="current_bid" readonly>
<input type='text' class='form-control new_bid' id='place_bid' name='place_bid' placeholder='The bid you make are in ".getUser(false)->getOffice()->getRegion()->getCurrency()."' pattern='^[0-9]*$'>
<input id="submit_bid" type="submit" name="submit_bid" class="btn btn-primary" value="Place bid" />

Заранее спасибо!

Ответы [ 4 ]

0 голосов
/ 13 февраля 2019

Прежде всего, вы не хотите использовать setInterval!Вы хотите использовать EventListener , и в этом случае keyup событие очень приятно.

Тогда вы можете использовать querySelector таквам не нужен jQuery для использования $('.class-selector')

И, как уже отмечали другие, вам нужно использовать element.value, чтобы получить значение нужного элемента.

Тогда вам нужно использовать parseInt для получения входного значения из строки в число для сравнения чисел.

(Обратите внимание, что я удалил readonly только для .new_bid, чтобы вы могли поиграть с фрагментом)

(function(){
  var inputOne = document.querySelector('.new_bid');
  var inputTwo = document.querySelector('.old_bid');
  var submitButton = document.querySelector('#submit_bid');
  
  var myValuesChanged = function() {
      if (parseInt(inputOne.value, 10) >= parseInt(inputTwo.value, 10)) {
          submitButton.disabled = false;
      } else {
          submitButton.disabled = true;
      }
      
      console.log('submitButton disabled: ' + submitButton.disabled);
  }
  
  inputOne.addEventListener("keyup", myValuesChanged, false);
  inputTwo.addEventListener("keyup", myValuesChanged, false);
  
})();
<input type="text" class='form-control old_bid' id="current_bid" name="current_bid">
<input type='text' class='form-control new_bid' id='place_bid' name='place_bid' placeholder='The bid you make are in ".getUser(false)->getOffice()->getRegion()->getCurrency()."' pattern='^[0-9]*$'>
<input id="submit_bid" type="submit" name="submit_bid" class="btn btn-primary" value="Place bid" />
0 голосов
/ 13 февраля 2019

Вам необходимо выбрать, какой вход вы используете, и разобрать его значение в целое число.Также немного измените последний бит:

var inputOne = parseInt(document.getElementsByClassName('form-control new_bid')[0].value);
var inputTwo = parseInt(document.getElementsByClassName('form-control old_bid')[0].value);
  setInterval(function () {
    if (inputOne >= inputTwo)
      $("#submit-bid").removeAttr("disabled");
      else
        $("submit-bid").attr("disabled", "disabled");
  }, 1000);

Хотя, так как вы уже используете jQuery и у вас есть идентификаторы, просто сделайте это:

var inputOne = parseInt($("#current_bid").val()),
    inputTwo = parseInt($("#place_bid").val());
setInterval(function () {
    if (inputOne >= inputTwo)
      $("#submit-bid").removeAttr("disabled");
      else
        $("submit-bid").attr("disabled", "disabled");
  }, 1000);
0 голосов
/ 13 февраля 2019

Вы можете использовать .value

var inputOne = document.getElementsByClassName('form-control new_bid')[0].value;
    var inputTwo = document.getElementsByClassName('form-control old_bid')[0].value;
    setInterval(function() {
      if (inputOne >= inputTwo)
        $(":submit").removeAttr("disabled");
      else
        $(":submit").attr("disabled", "disabled");
    }, 1);
0 голосов
/ 13 февраля 2019

Вам нужно использовать inputOne.value, чтобы получить текущее значение поля ввода!

Удачи в обучении кодированию: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...