API Docs for: 0.2
Show:

window.Bizs.FormLogic Class

提交表单控制逻辑

应用场景
get 查询表单
post 提交表单
ajax 提交表单

require: JC.BaseMVC , JC.Valid , JC.Panel

optional: JC.FormFillUrl

JC Project Site | API docs | demo link

页面只要引用本文件, 默认会自动初始化 from class="js_bizsFormLogic" 的表单

Form 可用的 HTML 属性

formType = string, default = get
form 的提交类型, 如果没有显式声明, 将视为 form 的 method 属性
类型有: get, post, ajax, jsonp
formSubmitDisable = bool, default = true
表单提交后, 是否禁用提交按钮
formResetAfterSubmit = bool, default = true
表单提交后, 是否重置内容
formBeforeProcess = function, window 变量域
表单开始提交时且没开始验证时, 触发的回调
function formBeforeProcess( _evt, _ins ){
   var _form = $(this);
   JC.log( 'formBeforeProcess', new Date().getTime() );
   //return false;
}
formProcessError = function, window 变量域
提交时, 验证未通过时, 触发的回调
function formProcessError( _evt, _ins ){
   var _form = $(this);
   JC.log( 'formProcessError', new Date().getTime() );
   //return false;
}
formAfterProcess = function, window 变量域
表单开始提交时且验证通过后, 触发的回调
function formAfterProcess( _evt, _ins ){
   var _form = $(this);
   JC.log( 'formAfterProcess', new Date().getTime() );
   //return false;
}
formBeforeSubmit = function, window 变量域
表单开始发送数据到服务器之前的回调
function formBeforeSubmit( _evt, _ins ){
   var _form = $(this);
   JC.log( 'formBeforeSubmit', new Date().getTime() );
   //return false;
}
formPopupType = string, default = dialog
定义提示框的类型: dialog, popup
formConfirmPopupType = string, default = dialog
定义确认提示框的类型: dialog, popup
formResetUrl = url
表单重置时, 返回的URL
formPopupCloseMs = int, default = 2000
msgbox 弹框的显示时间
formAjaxResultType = string, default = json
AJAX 返回的数据类型: json, html
formAjaxMethod = string, default = get
类型有: get, post
ajax 的提交类型, 如果没有显式声明, 将视为 form 的 method 属性
formAjaxAction = url
ajax 的提交URL, 如果没有显式声明, 将视为 form 的 action 属性
formAjaxDone = function, default = system defined
AJAX 提交完成后的回调, window 变量域
如果没有显式声明, FormLogic将自行处理
function formAjaxDone( _json, _submitButton, _ins ){
   var _form = $(this);
   JC.log( 'custom formAjaxDone', new Date().getTime() );
   if( _json.errorno ){
       _panel = JC.Dialog.alert( _json.errmsg || '操作失败, 请重新尝试!', 1 );
   }else{
       _panel = JC.msgbox( _json.errmsg || '操作成功', _submitButton, 0, function(){
           JC.f.reloadPage( "?donetype=custom" );
       });
   }
};
formAjaxDoneAction = url
声明 ajax 提交完成后的返回路径, 如果没有, 提交完成后将不继续跳转操作
formJsonpCb = function, default = FormLogic#_model._innerJsonpCb
自定义 JSOPN 处理回调, window 变量域
function customFormJsonpCb( _data, _info ){
   if( !( _data && _info ) ) return;
   var _frm = $( 'form.' + _info ), _ins;
   if( !_frm.length ) return;
   _ins = JC.BaseMVC.getInstance( _frm, Bizs.FormLogic );
   if( !_ins ) return;
}
URL: handler_jsonp.php?callbackInfo=FormLogic_1&callback=callback
OUTPUT:
<script>
window.parent 
   && window.parent != this
   && window.parent[ 'callback' ]
   && window.parent[ 'callback' ]( {"errorno":0,"errmsg":"","data":{"callbackInfo":"FormLogic_1","callback":"callback"}}, 'FormLogic_1' )
   ;
</script>

Form Control 可用的 html 属性

ignoreResetClear = bool, default = false
重置时, 是否忽略清空控件的值, 默认清空

submit button 可用的 html 属性

基本上 form 可用的 html 属性, submit 就可用, 区别在于 submit 优化级更高
formSubmitConfirm = string
提交表单时进行二次确认的提示信息
formConfirmCheckSelector = selector
提交表单时, 进行二次确认的条件判断
formConfirmCheckCallback = function
提交表单时, 进行二次确认的条件判断, window 变量域
function formConfirmCheckCallback( _trigger, _evt, _ins ){
   var _form = $(this);
   JC.log( 'formConfirmCheckCallback', new Date().getTime() );
   return _form.find('td.js_confirmCheck input[value=0]:checked').length;
}
formSubmitIgnoreCheck = bool, default = false
表单提交时, 是否忽略 JC.Valid 的验证
注意: 仅忽略内容为空的项, 如果已经填写内容, 那么内容必须与验证规则匹配
注: 有时 提交操作 仅为保存为草稿的时候, 是不需要验证所有内容的, 不过还是会对值非空的项进行验证
formResetCallback = callback
表单重置后的回调
function formResetCallback( _evt, _ins ){
   var _form = $(this);
   JC.log( 'formResetCallback', JC.f.ts() );
}

reset button 可用的 html 属性

如果 form 和 reset 定义了相同属性, reset 优先级更高
formConfirmPopupType = string, default = dialog
定义提示框的类型: dialog, popup
formResetUrl = url
表单重置时, 返回的URL
formResetConfirm = string
重置表单时进行二次确认的提示信息
formPopupCloseMs = int, default = 2000
msgbox 弹框的显示时间

普通 [a | button] 可用的 html 属性

buttonReturnUrl
点击button时, 返回的URL
returnConfirm = string
二次确认提示信息
popupType = string, default = confirm
弹框类型: confirm, dialog.confirm
popupstatus = int, default = 2
提示状态: 0: 成功, 1: 失败, 2: 警告
buttonClickBindSelector = selector
点击按钮时, 把按钮的值赋值给 绑定的 控件
注意: 这个属性仅支持 [input|button] 标签

Constructor

window.Bizs.FormLogic

()

Example:

       <script>
           JC.debug = true;
           JC.use( 'Bizs.FormLogic, Calendar, plugins.json2' );
           function formBeforeProcess( _evt, _ins ){
               var _form = $(this);
               JC.log( 'formBeforeProcess', new Date().getTime() );
           }
           function formAfterProcess( _evt, _ins ){
               var _form = $(this);
               JC.log( 'formAfterProcess', new Date().getTime() );
               //return false;
           }
           function formAjaxDone( _json, _submitButton, _ins ){
               var _form = $(this);
               JC.log( 'custom formAjaxDone', new Date().getTime() );
               if( _json.errorno ){
                   _panel = JC.Dialog.alert( _json.errmsg || '操作失败, 请重新尝试!', 1 );
               }else{
                   _panel = JC.msgbox( _json.errmsg || '操作成功', _submitButton, 0, function(){
                       JC.f.reloadPage( "?donetype=custom" );
                   });
               }
           };
       </script>
       <dl class="defdl">
           <dt>Bizs.FormLogic, get form example 3, nothing at done</dt>
           <dd>
               <dl>
                   <form action="./data/handler.php" method="POST"
                       class="js_bizsFormLogic"
                       formType="ajax"
                       formAjaxMethod="POST"
                       formBeforeProcess="formBeforeProcess"
                       formAfterProcess="formAfterProcess"
                       formAjaxDone="formAjaxDone"                            
                       formAjaxDoneAction="?donetype=system"
                       >
                       <dl>
                           <dd>
                               文件框: <input type="text" name="text" reqmsg="文本框" value="test3" />
                           </dd>
                           <dd>
                               日期: <input type="text" name="date" datatype="date" reqmsg="日期" value="2015-02-20" />
                               <em class="error"></em>
                           </dd>
                           <dd>
                               下拉框:
                                   <select name="dropdown" reqmsg="下拉框" >
                                       <option value="">请选择</option>
                                       <option value="1">条件1</option>
                                       <option value="2">条件2</option>
                                       <option value="3" selected>条件3</option>
                                   </select>
                           </dd>
                           <dd>
                               <input type="hidden" name="getform" value="1" />
                               <button type="submit" formSubmitConfirm="确定要提交吗?" >submit - dialog</button>
                               <button type="submit" formConfirmPopupType="dialog" 
                                                       formSubmitConfirm="确定要提交吗?" >submit - popup</button>
                               <button type="reset" formResetConfirm="确定要重置吗?"  >reset</button>
                               <button type="reset" formResetConfirm="确定要重置吗?" formResetUrl="?"  >reset - url</button>
                               <a href="?">back</a>
                           </dd>
                       </dl>
                   </form>
               </dl>
           </dd>
       </dl>     

Methods

_beforeInit

() private

初始化之前调用的方法

_init

(
  • _selector
)
private

内部初始化方法

Parameters:

  • _selector Selector

_inited

() private

内部初始化完毕时, 调用的方法

_initHanlderEvent

() private

内部事件初始化方法

getInstance

(
  • _selector
)
FormLogic instance static

获取或设置 FormLogic 的实例

Parameters:

  • _selector Selector

Returns:

FormLogic instance:

init

(
  • _selector
)
Array static

处理 form 或者 _selector 的所有form.js_bizsFormLogic

Parameters:

  • _selector Selector

Returns:

Array:

Array of FormLogicInstance

notification

(
  • _evtName
  • _args
)

通知选择器有新事件
JC 组件以后不会在 HTML 属性里放回调, 改为触发 selector 的事件

Parameters:

notificationHandler

(
  • _evtName
  • _args
)

通知选择器有新事件, 有返回结果
JC 组件以后不会在 HTML 属性里放回调, 改为触发 selector 的事件

Parameters:

Returns:

:

on

(
  • _evtName
  • _cb
)

使用 jquery on 绑定事件

Parameters:

Returns:

BaseMVCInstance

selector

()

获取 显示 BaseMVC 的触发源选择器, 比如 a 标签

Returns:

selector

trigger

(
  • _evtName
  • _args
)

使用 jquery trigger 触发绑定事件

Parameters:

Returns:

BaseMVCInstance

triggerHandler

(
  • _evtName
  • _args
)

使用 jquery triggerHandler 触发绑定事件

Parameters:

Returns:

:

Properties

DATA_PARSE

Function static

全局数据解析函数
所有换回结果都会调用
arg: _data[string of result]

Default: null

GLOBAL_AJAX_CHECK

Function static

全局返回数据处理回调
所有换回结果都会调用
arg: _data[string of result]

Default: null

popupCloseMs

Int static

msgbox 提示框的自动关闭时间

Default: 2000

popupCloseMs

String static

AJAX 表单的提交类型
plugins, form
plugins 可以支持文件上传

Default: empty

processErrorCb

Function static

表单提交时, 内容填写不完整时触发的全局回调

Default: null

resetAfterSubmit

Bool static

表单提交后, 是否重置表单内容

Default: true

submitDisable

Bool static

表单提交后, 是否禁用提交按钮

Default: true