@@ -280,7 +280,7 @@ def input_control(spec, preprocess_funcs, item_valid_funcs, onchange_funcs, form
280280 return data
281281
282282
283- def check_item (name , data , valid_func , preprocess_func ):
283+ def check_item (name , data , valid_func , preprocess_func , clear_invalid = False ):
284284 try :
285285 data = preprocess_func (data )
286286 error_msg = valid_func (data )
@@ -295,7 +295,7 @@ def check_item(name, data, valid_func, preprocess_func):
295295 'invalid_feedback' : error_msg
296296 }))
297297 return False
298- else :
298+ elif clear_invalid :
299299 send_msg ('update_input' , dict (target_name = name , attributes = {
300300 'valid_status' : 0 , # valid_status为0表示清空valid_status标志
301301 }))
@@ -334,6 +334,7 @@ def input_event_handle(item_valid_funcs, form_valid_funcs, preprocess_funcs, onc
334334 :param onchange_funcs: map(name -> onchange_func)
335335 :return:
336336 """
337+ data = None
337338 while True :
338339 event = yield next_client_event ()
339340 event_name , event_data = event ['event' ], event ['data' ]
@@ -342,7 +343,7 @@ def input_event_handle(item_valid_funcs, form_valid_funcs, preprocess_funcs, onc
342343 if input_event == 'blur' :
343344 onblur_name = event_data ['name' ]
344345 check_item (onblur_name , event_data ['value' ], item_valid_funcs [onblur_name ],
345- preprocess_funcs [onblur_name ])
346+ preprocess_funcs [onblur_name ], clear_invalid = True )
346347 elif input_event == 'change' :
347348 trigger_onchange (event_data , onchange_funcs )
348349
@@ -375,10 +376,9 @@ def input_event_handle(item_valid_funcs, form_valid_funcs, preprocess_funcs, onc
375376 }))
376377
377378 if all_valid :
378- break
379+ break # form event loop
379380 elif event_name == 'from_cancel' :
380- data = None
381- break
381+ break # break event loop
382382 else :
383383 logger .warning ("Unhandled Event: %s" , event )
384384
0 commit comments