Как получить доступ к $ (this) .val () в другой функции, передав ссылку из события onclick? - PullRequest
2 голосов
/ 14 марта 2020

Текущий код:

function validateInput() {
  console.log($(this).val())
}

$("#element")
  .datepicker({
    todayHighlight: true,
    weekStart: 0,
    format: "yyyy-mm-dd",
    onClose: function() {
      validate.validateInput()
    }
  })

Исход / выпуск:

Когда я это делаю, я ничего не получаю, даже если я выбираю какую-либо дату в DatePicker , Я хочу иметь возможность получить текущее выбранное значение, если выбрано, или ноль, если нет. Я делаю это правильно?

Ответы [ 4 ]

3 голосов
/ 14 марта 2020

Вы должны передать this в функцию, чтобы вы могли обратиться к ней внутри функции для доступа к значению. Кроме того, не уверен, почему вы используете validate в validate.validateInput():

function validateInput(el){
  console.log($(el).val());
}
 
$("#element")
  .datepicker({
    todayHighlight: true,
    weekStart: 0,
    format: "yyyy-mm-dd",
    onClose: function() {
      validateInput(this);
    }
  });
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.11/jquery-ui.min.js"></script>
<p>Date: <input type="text" id="element"></p>
1 голос
/ 14 марта 2020

Передайте это как обычный аргумент.

function validateInput(el) {
  console.log($(el).val())
}

$("#element")
  .datepicker({
    todayHighlight: true,
    weekStart: 0,
    format: "yyyy-mm-dd",
    onClose: function() {
      validateInput(this)
    }
  })
0 голосов
/ 14 марта 2020

Если для validate.validateInput() не требуется this для ссылки на validate (например, для вызова других методов проверки), тогда вы можете использовать Array.prototype.bind () для управления интерпретацией this, без необходимости передавать параметр.

function validateInput() {
    console.log($(this).val());
}

$("#element").datepicker({
    'todayHighlight': true,
    'weekStart': 0,
    'format': "yyyy-mm-dd",
    'onClose': validate.validateInput.bind(this)
});
0 голосов
/ 14 марта 2020

Ну, вы могли бы сделать так:

function validateInput(element){

console.log($(element).val())
}

и позвонить

    $("#element")
      .datepicker({
        todayHighlight: true,
        weekStart: 0,
        format: "yyyy-mm-dd",
        onClose: function() {
          validate.validateInput('#element');
        }
      });

или динамически

$(".date_input")
          .datepicker({
            todayHighlight: true,
            weekStart: 0,
            format: "yyyy-mm-dd",
            onClose: function(e) {
              validate.validateInput(e.target);
            }
          });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...