2015-09-30 8 views
1

Javascript/JQuery (не работает, как я хочу его):Ссылка текстовое поле, что я в том, когда я нажимаю войти

function chkKey(event) { 
    if (event.keyCode == 13) { 
     $(this).val("value", "wow such code"); 
    }; 
}; 

Я не хочу, чтобы ссылаться на текстовое поле с именем, потому что у меня будет несколько текстовых полей на странице с разными именами, которые используют одну и ту же функцию chkKey. Мне нужно ссылаться на текстовое поле, в котором я сейчас живу, независимо от имени. Это возможно? Я думаю, что это проблема с родителями/пузырями, но у меня нет опыта с этими вещами вообще.

EDIT: Полный HTML/JS:

<!DOCTYPE html> 
<html> 

<head> 
    <meta charset="utf-8" name="viewport" content="width=device-width, initial-scale=1.0" /> 
    <title>Boxes and Lines</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
</head> 

<body> 
    <div id="outerDiv"> 
     <input type="button" name="btnNewField" value="Add New Field" onclick="appendNewField()"> 
     <p></p> 
     <div id="mainDiv"></div> 
    </div> 

    <script> 
     function chkKey(event) { 
      if (event.keyCode == 13) { 
       $(this).val("value", "wow"); 
      }; 
     }; 

     // returns a text field object 
     function txtField(fieldName, fieldVal){ 
      var objTxtField = document.createElement("input"); 
      $(objTxtField).attr({ 
       type: "text", 
       name: fieldName, 
       value: fieldVal, 
       onkeyup: "chkKey(event)" 
      }); 
      return objTxtField; 
     }; 

     // if there is no appended text field, create one and give it focus 
     function appendNewField() { 
      if ($("#mainDiv").find('[name="appTxtField"]').length === 0) { 
       $(new txtField("appTxtField", "")).appendTo($("#mainDiv")).focus(); 
      }; 
     }; 
    </script> 
</body> 
</html> 
+0

Вы можете добавить полный HTML код – Tushar

+0

Добавлен полный код HTML/JS. –

ответ

1

Есть две ошибки в коде:

  • Использование val как это было attr или prop, но он ожидает, что только один параметр
  • Попробуйте добавить обработчик события keyup с attr, и вы должны использовать on

Посмотрите на код ниже, закрепленную перечисленного:

function chkKey(event) { 
 
    if (event.keyCode == 13) { 
 
     $(this).val("wow such code"); 
 
    }; 
 
}; 
 

 
// returns a text field object 
 
function txtField(fieldName, fieldVal){ 
 
    var objTxtField = document.createElement("input"); 
 
    $(objTxtField).attr({ 
 
     type: "text", 
 
     name: fieldName, 
 
     value: fieldVal 
 
    }).on('keyup', chkKey); 
 
    
 
    return objTxtField; 
 
}; 
 

 

 
// if there is no appended text field, create one and give it focus 
 
function appendNewField() { 
 
    if ($("#mainDiv").find('[name="appTxtField"]').length === 0) { 
 
     $(new txtField("appTxtField", "")).appendTo($("#mainDiv")).focus(); 
 
    }; 
 
}; 
 

 
appendNewField()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="mainDiv"></div>

+0

Работает как шарм. Спасибо за исправления. –

1

onkeyup: "chkKey(event, this)" будет проходить текущий элемент функции.

+0

Я не знал, что это возможно. Я обязательно буду использовать это в будущем. –

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

  • Нет связанных вопросов^_^