Как использовать jquery val()

#javascript #jquery

#javascript #jquery

Вопрос:

HTML:

 <div>
  <div style='margin-top: 30px' class='form-group align-items-center'> 
    <form> 
      <input name='test-id' class='form-control' id='test-id' type='text'>
    </form> 
  </div> 
  <div id='form-button' type='button' class='btn btn-danger'>Submit</div>
</div>
  

js:

 $(document).ready(function(){
 $(document).on('click', '#form-button', function(e) {
   console.log($("#test-id").val())
 }) 
})
  

codepen: https://codepen.io/vorousjames/pen/PoNramd?editors=0001

регистрирует «» вместо значения.

Почему это не работает

Комментарии:

1. Работает для меня в предоставленном вами codepen.

2. Я не вижу ничего плохого в функциональности. Он регистрирует значения, как и ожидалось. Вы убедились, что ввели что-то в поле ввода, прежде чем нажать Submit ?

3. Проголосовавший против, приведенный пример работает так, как ожидалось.

Ответ №1:

Журнал консоли работает нормально. Когда внутри текстового поля нет значения, оно, очевидно, выдаст «» в качестве вывода. Хотя это очевидно и никаких изменений не требуется, фрагменты в качестве ответов мне не показались правильными, поэтому я публикую, как это должно быть сделано.

Чтобы предотвратить отправку form при нажатии enter , event.preventDefault() используется. Кроме того, если вы хотите, чтобы код генерировал выходные данные только тогда, когда внутри текстового поля есть какое-то значение, вы извлекаете значение, обрезаете его с помощью trim() , который удаляет пробелы, проверяет, пусто ли оно («» выдает false), и регистрирует консоль, только если оно не пустое.

 $(document).on('click', '#form-button', function(event) {
  let val = $("#test-id").val().trim();
  if (val) {
    console.log(val);
  }
});  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div>
  <div style='margin-top: 30px' class='form-group align-items-center'>
    <form onsubmit="event.preventDefault();">
      <input name='test-id' class='form-control' id='test-id' type='text'>

      <button id='form-button' type='button' class='btn btn-danger'>Submit</button>
    </form>
  </div>
</div>  

Ответ №2:

Codepen, на который вы ссылаетесь, работает для меня. Он регистрирует «» input , если вызываемый элемент val() пуст. Если вы сначала введете в него что-то, а затем нажмете «Отправить», он выведет что-то другое, кроме «».

Ответ №3:

На самом деле он регистрирует правильное значение, когда вы нажимаете на него.

Скорее всего, вы нажимаете enter, и поскольку ваш ввод находится внутри формы, нажатие enter отправит форму, поэтому вы видите пустую строку.

Вам нужно исправить свою форму, просто чтобы продемонстрировать, я добавил return false в метод отправки формы, чтобы избежать отправки формы.

 $(document).ready(function() {
  $(document).on('click', '#form-button', function(e) {
    console.log($("#test-id").val())
  })
})  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div>
  <div style='margin-top: 30px' class='form-group align-items-center'>
    <form onsubmit="return false">
      <input name='test-id' class='form-control' id='test-id' type='text'>
    </form>
  </div>
  <button id='form-button' type='button' class='btn btn-danger'>Submit</button>
</div>  

Правильная форма должна быть примерно такой:

 function checkValues() {
  console.log($("#test-id").val())
};  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div>
  <div style='margin-top: 30px' class='form-group align-items-center'>
    <form onsubmit="checkValues(); return false;">
      <input name='test-id' class='form-control' id='test-id' type='text'>

      <button id='form-button' type='submit' class='btn btn-danger'>Submit</button>
    </form>
  </div>
</div>  

Комментарии:

1. Опубликованный вами код не работает при нажатии кнопки. Это потому, что кнопка не submit является типом. Взгляните на мой ответ.

2. @PranavRustagi У меня есть два примера, объясняющих, что не так с кодом OP, один из которых работает, а другой работает.

3. Введите что-нибудь в текстовое поле и нажмите кнопку «Отправить». Вы поймете, о чем я говорю 🙂

4. Ах, я понимаю, что вы имеете в виду, я забыл установить тип отправки во втором примере.