2010-04-24 3 views
2

** EDIT --- Попытка еще более упрощенной версии ... Все еще не работает ... Возвращает $ (это) .closest не является функцией ошибки ... **jquery добавить строку onclick

$("#fitable input[name^=f1]").focus(function() { 
     var newRow = '<tr><td></td><td></td><td></td><td></td></tr>'; 
     $(this).closest("tbody").append(newRow); 
    }); 

Оригинал сообщение

Довольно новый для JQuery, так что я надеюсь, что кто-то может помочь мне ... Там есть пара вещей происходит здесь ... Помогите с какой-либо его части ценится ,

Для начала я пытаюсь добавить строку в таблицу, когда пользователь щелкает в первом разрешенном поле ввода для этой строки. Вот код, который я пытаюсь использовать:

$("#fitable > tbody > tr > td > input").bind('focus', function() { 
     if($(this).attr('disabled', false)) { 
      $(this).click(function() { 
        var newRow = '<tr><td><input name="f1[]" value="" /><label>CustNew</label></td><td><input name="field_n1[]" value="" /><label>N1</label></td><td><input name="field_n2[]" value="" /><label>N2</label></td></tr>'; 
        $(this).closest("tbody").append(newRow); 
      }); 
     } 
    }); 

Если это полезно, вот HTML:

<table id="fitable"> 
    <tbody> 
     <tr valign="top"> 
      <td><input disabled="disabled" name="cust" id="edit-cust" value="[email protected]" type="text"><label>Cust</label></td> 
      <td><input name="field_n1[]" value="" type="text"><label>N1</label></td> 
      <td><input name="field_n2[]" value="" type="text"><label>N2</label></td> 
     </tr> 
    </tbody> 
</table> 
+0

попробуйте заменить шкафы с родителями – hookedonwinter

+1

или '$ (this) .parents (" tbody: first "). Append (newRow);' –

+0

Что @ [Джим Шуберт] тоже сказал! – hookedonwinter

ответ

0

Я думаю, что ваш селектор некорректен. Попробуйте это:

$("#fitable > tr td input:enabled:first").focus(function() { 
    var newRow = '<tr><td><input name="f1[]" value="" /><label>CustNew</label></td><td><input name="field_n1[]" value="" /><label>N1</label></td><td><input name="field_n2[]" value="" /><label>N2</label></td></tr>'; 
    $(this).parents("tbody:first").append(newRow); 
}); 

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

1

Я думаю, что ваш, если оператор установки щелкнул атрибут ложной. Попробуйте это:

if($(this).attr('disabled') == false) { 
    // do stuff 
} 
+0

Спасибо. Я пробовал это, к сожалению, такое же поведение ... как и при отсутствии добавления ... Вы видите что-нибудь еще, что может быть? – BigDogsBarking

+0

в инструкции if, добавьте console.log ('if'); или что-то ... просто чтобы проверить, что вы действительно попадаете в это утверждение. Затем откройте консоль и проверьте журнал. Или, если вы не хотите использовать консоль, сделайте предупреждение («если»); вместо console.log ... дайте нам знать, что произойдет – hookedonwinter

+0

alert ('if') всплывает, поэтому я знаю, что я в нужном месте ... Я изменил свой код, чтобы сделать его еще более простым, и это все еще не добавляет ... Идет редактирование моего исходного сообщения всего за секунду, чтобы вы могли увидеть последнюю версию ... – BigDogsBarking

0

Попробуйте это:

$("#fitable input").focus(function() { 
     if($(this).attr('disabled', false)) { 
      $(this).click(function() { 
        var newRow = '<tr><td><input name="f1[]" value="" /><label>CustNew</label></td><td><input name="field_n1[]" value="" /><label>N1</label></td><td><input name="field_n2[]" value="" /><label>N2</label></td></tr>'; 
        $(this).closest("tbody").append(newRow); 
      }); 
     } 
    }); 
+0

Попытка вернуть ошибку: $ (this) .closest не является функцией ... (?) – BigDogsBarking

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