Как установить атрибут 'size' для элемента <input> с помощью объекта атрибута?

Я начинаю jQuery и натолкнулся на один из методов создания нового элемента на странице. Я могу создать элемент в порядке. Однако один из атрибутов (размер) по умолчанию равен 20, хотя я четко заявляю, что он должен быть больше. Является ли это ошибкой jQuery, или я что-то упускаю? Другие атрибуты в объекте атрибута (тип, автофокус) работают нормально.

Используемый мной код:

$('<input>', {
  'type' : 'text',
  'size' : 50,
  'autofocus' : 'true'
});

У меня нет CSS файла.

Когда я использую метод attr(), я могу установить размер. Но я хочу знать, что я не единственный, кто не может установить атрибут размера для элемента, используя объект атрибута. Я использую jQuery 1.9.1.

Любые ответы будут оценены.

Ответ 1

Используйте функцию .prop():

$('<input>', {
  'type' : 'text',
  'autofocus' : 'true'
}).prop('size','50');

Или этот синтаксис:

$('<input>', {
   'type': 'text',
    prop: {
        size: "50"
    },
   'autofocus': 'true'
})

Пример jsFiddle

Здесь старый отчет об ошибке, когда он был обнаружен, и объяснение того, почему они не повторно активировали старые функции.

Ответ 2

В качестве обходного пути вы можете использовать "Размер" с капиталом S:

$('<input>', {
  'type' : 'text',
  'Size' : 50,
  'autofocus' : 'true'
});

http://jsfiddle.net/g9Hct/

Ответ 3

Интересно. Я не знаю, почему это происходит и может только предположить, что это ошибка jQuery, как вы предполагаете.

Вы уже знаете, как использовать attr() для установки размера, но для справки вы можете вызвать это сразу после создания элемента (до добавления его на страницу или каким-либо другим образом):

$('<input>', {
  'type' : 'text',
  'autofocus' : 'true'
}).attr('size', 50);

Другим подходом было бы просто добавить атрибуты в селектор:

$('<input type="text" autofocus="true" size="50">');

JSFiddle демо как в действии.