Я верю, потому что
var textb = $('#other').attr('id');
var combo = $('#category').attr('id');
Разве вы не присваиваете идентификаторы этих элементов переменным, а не элементам?
Я имею в виду ... действительно ли textb является элементом ввода после выполнения этого кода, или это просто строка "other"?
Попробуйте это:
var textb = $('#other');
var combo = $('#category');
Edit:
function addCombo() {
var textb = document.getElementById("other");
var combo = document.getElementById("category");
var option = document.createElement("option");
option.text = textb.value;
option.value = textb.value;
try {
combo.add(option, null); //Standard
}catch(error) {
combo.add(option); // IE only
}
textb.value = "";
}