2015-05-05 6 views
-1

Я читал другие примеры, где toLowerCase не определен, но я до сих пор не понимаю. Может ли кто-нибудь объяснить, почему моя функция не будет работать?Невозможно прочитать свойство «toLowerCase» неопределенного - jQuery

var changeTitle = function() { 
 
    var loanTitle = $(this).val(); 
 
    $(this).prev().text(loanTitle); 
 
};
<h2>Loan One</h2> 
 
<input type="text" onkeypress="changeTitle()" maxlength="25" />

+1

Вы уверены, что это код, который дает эту ошибку? toLowerCase даже не называется ... ??? В любом случае вам нужно указать нулевые контрольные переменные, которые вы вызываете toLowerCase. – Barett

+0

@Barett Да, это то, что всплывает, и я не слишком уверен, почему. – Frank

ответ

7

В функции, то this объект относится к окну и не поле ввода. Обновите свой код onkeypress по адресу:

<input type="text" name="loanName" onkeypress="changeTitle.call(this)" class="loanNameV1 qForms" maxlength="25" placeholder="Loan Name" /> 
+0

Ahhh thanks @hoyen! Теперь он работает, но почему «это» относится к окну, а не к элементу? – Frank

+2

Поскольку функция является частью объекта window, а не объекта элемента ввода. Итак, onkeypress вы вызываете функцию, которая является частью объекта window. Этот объект будет ссылаться на окно. Используя вызов или применить, вы можете изменить ссылку на другой объект. В этом случае введите поле ввода. Когда вы получаете шанс, научитесь «звонить» и «применять». Это поможет вам понять это намного лучше. – Hoyen

+1

И чтобы добавить к нему, onkeypress является частью объекта поля ввода, и поэтому этот объект будет ссылаться на поле ввода. – Hoyen

2

Я не уверен, что вы на самом деле пытаетесь сделать, но я передал свой входной элемент в качестве параметра функции вы определили, как this и я добавил библиотеку JQuery в мой сниппет. Он работает с исключением того, что последний заголовок ключа не отображается в заголовке. Возможно, вы можете использовать это вместе со своей функцией toLowerCase и исправить ее по своему вкусу.

var changeTitle = function(obj) { 
 
    var loanTitle = $(obj).val(); 
 
    $(obj).prev().text(loanTitle); 
 
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<h2 class="nameLoan1"> Loan One </h2> 
 
<input type="text" onkeypress="changeTitle(this);" maxlength="25" placeholder="Loan Name" />

Смежные вопросы