2016-08-05 3 views
0

Im динамически создавать строки, но мне также нужно передать в идентификатор элемента управления и значениемJQuery ПАРОЛЯ и значение на входе KeyUp

function AddClient() { 
    var uuid = guid(); 
    $("#clientList").append("<row><input type='text' placeholder='type to search' name='clientName' id='ClientName" + uuid + "' class='form-control' onkeyup='SearchClient($(this).attr('id'),$(this).val())'></row>") 


      function SearchClient(id, term) { 
     //do some lookups 
     } 

ошибка прибудете (index):2 Uncaught SyntaxError: Unexpected token }

Моя проблема $(this).attr('id') , любые идеи, что я должен заменить?

+0

Возникает ли ошибка при * этом коде * выполняется, или когда код в KeyUp события 'input' в выполняет? – David

ответ

1

Вы можете сделать как этот

function AddClient() { 
    var uuid = guid(); 
    $("#clientList").append("<row><input type='text' placeholder='type to search' name='clientName' id='ClientName" + uuid + "' class='form-control' onkeyup='SearchClient(this)'></row>"); 
} 


function SearchClient(elemt) { 
    id= $(elemt).attr('id'); 
    term= $(elemt).value(); 
    //do some lookups 
} 
1

возможно вы отсутствующий} сверху код.

Вы можете заменить «id» другим текстом;

id='ClientName" + uuid 

заменить "CLIENTNAME"

clientName='ClientName" + uuid 

, потому что вы добавляете пользовательские атр к html.Call CLIENTNAME атр;

$(this).attr('clientName') 
+0

Пользовательские атрибуты могут аннулировать HTML-код, поэтому HTML5 позволяет атрибуты «data- *», например. '-Клиент-данных имя = 'ClientName ...' ' – apokryfos

1

Может глупо мне предложить рефакторинга кода, но если вы только начинаете рассматривать делать это:

function AddClient() { 
    var uuid = guid();  
    $("#clientList").append("<row><input type='text' placeholder='type to search' name='clientName' id='ClientName" + uuid + "' class='form-control' /></row>"); 
} 
$(document).on("keyup","[name='clientName']",SearchClient); 

function SearchClient() { 
    var id = $(this).attr('id'); 
    var term = $(this).val();    
} 

Плюсы: Одноместные связывании

Минусы: Bound на документе, вам может потребовать привязать его к таблице, в которой она содержится.

0

Попробуйте это, проблема заключается в том, что у вашего кода есть «» перед id в функции keyup.

$("#clientList").append("<row><input type='text' placeholder='type to search' name='clientName' id='ClientName" + uuid + "' class='form-control' onkeyup='SearchClient($(this).attr(\"id\"),$(this).val())'></row>") 
0

Поскольку вы используете jQuery, используйте jQuery. Удалите встроенный код целиком и просто добавьте один обработчик событий для этих элементов. Что-то вроде этого:

$(document).on('keyup', 'input[id^=ClientName]', function() { 
    SearchClient($(this).attr('id'),$(this).val()); 
}); 

Тогда вам не нужен встроенный код на все:

$("#clientList").append("<row><input type='text' placeholder='type to search' name='clientName' id='ClientName" + uuid + "' class='form-control'></row>"); 

Примечание: Вполне возможно, что вы ошиблись в отладке и что ошибка исходит из кода, который добавляет элементы DOM, а не код, выполняемый в нем. Обратите внимание, что в коде отсутствует сообщение с запятой после инструкции. Если код в вопросе является полным примером, он слегка искажен.

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