Thank you for your feedback!

I found " onchange="jQuery('#model_name').empty();" this is unnecessary
operation for my purpose so it's removed!

On Tue, Jan 27, 2015 at 11:19 AM, Derek <[email protected]> wrote:

> What I mean by 'you are mixing your view with your controller' is that you
> are using your controller to build HTML that will be used as-is. You should
> never create HTML in your controllers, leave that to the views. The whole
> point of MVC is that each part has a very specific purpose. Don't create
> your models in your controllers or views, don't create html in your models
> or controllers, and don't put logic in models and views.
>
> https://www.youtube.com/watch?v=8FWdQVNeTlI
>
>
> On Tuesday, January 27, 2015 at 10:15:50 AM UTC-7, Derek wrote:
>>
>> Well, where do I start? It looks like you are a victim of copy and paste
>> coding. Delete your two functions and start over again.
>>
>> That said, you are mixing your view with your controller, please don't do
>> that. I would suggest you use this web2pyslice as a starting point. (yes, I
>> wrote it)
>>
>> http://www.web2pyslices.com/slice/show/1724/cascading-
>> dropdowns-simplified
>>
>>
>>
>>
>> On Monday, January 26, 2015 at 1:28:20 PM UTC-7, Omi Chiba wrote:
>>>
>>> I have a three dropdown and the value will be dynamically changed using
>>> ajax. It's working fine but something is wrong. In second dropdown
>>> (id="lead_name"), I specify jQuery('#model_name') but it's
>>> actually jQuery('#leadl_name') but then when the value for the second drop
>>> changed, the value disappear from the second and third. When I keep the
>>> current way (which is wrong name) it's working as expected.... Do you guys
>>> know what's wrong?
>>>
>>> This is my view
>>>
>>> <form enctype="multipart/form-data" action="{{URL()}}" method="post">
>>>                 <tr>
>>>                 <td><select name='model_name' onchange="jQuery(
>>> '#model_name').empty();
>>>                     ajax('lead_ajax', ['model_name'], 'lead_name');">
>>>                     {{for model in models:}}
>>>                         <option value="{{=model.Name}}"
>>>                         {{=" selected='selected'" if str(model.Name)=
>>> =request.vars.model_name else ""}}>
>>>                         {{=model.Name}}
>>>                         </option>
>>>                     {{pass}}
>>>                 </select></td>
>>>                 <td><select id='lead_name' name='lead_name' onchange="
>>> jQuery('#model_name').empty();
>>>                     ajax('block_ajax', ['lead_name'], 'block_name');">
>>>                     {{for lead in leads:}}
>>>                         <option value="{{=lead.Name}}"
>>>                         {{=" selected='selected'" if str(lead.Name)=
>>> =request.vars.lead_name else ""}}>
>>>                         {{=lead.Name}}
>>>                         </option>
>>>                     {{pass}}
>>>                 </select></td>
>>>                  <td><select id='block_name' name='block_name'>
>>>                     {{for block in blocks:}}
>>>                         <option value="{{=block.Name}}"
>>>                         {{=" selected='selected'" if str(block.Name)=
>>> =request.vars.block_name else ""}}>
>>>                         {{=block.Name}}
>>>                         </option>
>>>                     {{pass}}
>>>                 </select></td>
>>>                     <td></td>
>>>                     <td></td>
>>>                 <td><input type="submit" value='Submit'></td>
>>>                 </tr>
>>>             </form>
>>>
>>> My controller
>>>
>>> def index():
>>>     response.title='KR Quick Delivery Service'
>>>
>>>     if request.vars.model_name:
>>>         lists = db((db.KR_Product.Model==request.vars.model_name) & (db.
>>> KR_Product.Lead==request.vars.lead_name) & (db.KR_Product.Block==request
>>> .vars.block_name)).select(db.KR_Product.ALL)
>>>     else:
>>>         lists=''
>>>     models = db().select(db.KR_Model.ALL)
>>>     leads = db(db.KR_Lead.ModelName == '20').select(db.KR_Lead.ALL)
>>>     blocks = db(db.KR_Block.LeadName == '01').select(db.KR_Block.ALL)
>>>
>>>     return dict(lists=lists,models=models,leads=leads,blocks=blocks)
>>>
>>> def lead_ajax():
>>>     leads = db(db.KR_Lead.ModelName==request.vars.model_name).select(db.
>>> KR_Lead.ALL)
>>>     result = ''
>>>     for lead in leads:
>>>         result += "<option value='" + lead.Name + "'>" + lead.Name +
>>> "</option>"
>>>     return XML(result)
>>>
>>> def block_ajax():
>>>     blocks = db(db.KR_Block.LeadName==request.vars.lead_name).select(db.
>>> KR_Block.ALL)
>>>     result = ''
>>>     for block in blocks:
>>>         result += "<option value='" + block.Name + "'>" + block.Name +
>>> "</option>"
>>>     return XML(result)
>>>
>>>
>>>
>>>  --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "web2py-users" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/web2py/ZnZtTw-HXFc/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to