2009-07-15 1 views
0

Я хочу создать форму для резервирования заемных товаров. Резервирование состоит из времени сбора, времени возврата и пунктов, которые reserver хочет заимствовать и их суммы. Например, я мог бы зарезервировать три пластины, три ножа и три вилки на оставшуюся часть недели.Rails: как получить значение из другого поля при выполнении функции удаленного обмена в текстовом поле

В форме, я хочу сделать проверку AJAX, которая проверяет наличие достаточного количества предметов. Рядом с каждым элементом у меня есть текстовое поле, с помощью которого reserver вводит сумму элемента. После ввода я хочу выполнить вызов onchange, который проверяет, доступно ли количество элементов для данных дат. Таким образом, мне нужно передать удаленную функцию, указанную в onchange, следующими параметрами: идентификатор элемента, количество элементов (значение текущего текстового поля) и время возврата и время возврата, которые указаны в полях datetime_select выше. Это мой код:

<% with = "'amount='+value+'&item=#{item.id.to_s}&pick_up_time=#{@reservation.pick_up_time.to_s}&return_time=#{@reservation.return_time.to_s}'" %> 
<%= text_field_tag "reservation[#{prefix}reserved_items][#{item.id}]", get_amount_value(item, @reservation), :size => 3, :onchange => "#{remote_function(:url => { :controller => :items, :action => :availability }, :with => with, :update => availability_url) }" %> 

Очевидно, что это не работает, так как @ reservation.return_time и @ reservation.pick_up_time еще не установлены, потому что форма еще не отправлена. Мой вопрос: как мне получить эти ценности? Я считаю, что это должно быть сделано с помощью javascript-вызова, но мне не удавалось вставлять javascript-вызов в переменную «с» или, по крайней мере, не работало. Кто-нибудь знает, что я должен делать?

+0

если сервер делает проверки, почему не только предварительно передайте форму на сервер и определите там ошибку. Так как сервер вовлечен в любом случае ... – ErsatzRyan

ответ

1

использование прототипа селекторы $ (# reservations_pick_up_time) .value

: с атрибутом является просто место для вас, чтобы написать JS код, который будет отображать встроенный

+0

Я попробовал, но есть странная ошибка: когда я пытаюсь спросить значение одного из полей pick_up_time (это поле rails datetime_select, состоящее из пяти выпадающих списков) в javascript , он отвечает: «TypeError: $ (« convers_pick_up_time_3i »). value.toS не является функцией». Я могу получить значения из любого другого поля, и я также могу получить, например, тип этого конкретного поля, но по какой-то причине он не дает значения. Есть идеи по этому поводу? – Kusti

+1

вам не нужно .toS должно просто быть в состоянии сделать $ ("convers_pick_up_time_2i"). Значение + "/" + $ ("convers_pick_up_time_3i"). Значение + "/" + $ ("convers_pick_up_time_1i"). значение дает мне MM/DD/YYYY, тогда вы можете просто продолжать делать время – ErsatzRyan

+0

Я не пытался сделать вызов .toS, он просто говорил об этом ... но оказалось, что ошибка была вызвана по какой-то мистической переменной именования вещей, больше информации в моем другом вопросе, относящемся к теме: http://stackoverflow.com/questions/1136688/how-to-get-the-value-of-a-datetimeselect-field- с-javascript-in-ruby-on-rails В любом случае, спасибо за помощь, ваш ответ дал мне смелость поверить, что я поступаю правильно :) – Kusti