<button type="button" onclick="javascript:jumpUrl(url('/loanmgr/newloan'));" class="btn btn-primary right add-bottom">新增貸款</button> <button type=‘button’ onclick=‘javascript:jumpUrl()’>申請貸款
申請貸款須要的信息javascript
<?pho /** * 生成tr * * $lang = array( * 'gender' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')), * 'gender1' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')), * 'gender2' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')), * 'gender3' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')), * ); * * $lang = array( * 'gender' => '機構名稱', * 'gender1' => '性別1', * 'gender2' => '性別2', * 'gender3' => '性別3', * ); */ function buildTr($data) { $_option = $data['_option']; $_data = $data['_data']; unset($data['_data'], $data['_option']); $td_limit = isset($_option['td_limit']) ? $_option['td_limit'] : 2; $td_count = 1; $tr = ''; foreach($data as $key => $value) { if($td_count === 1) { $tr .= "<tr>\r\n"; $td = ''; } $name = isset($value['name']) ? $value['name'] : $key; $val = isset($_data[$key]) ? $_data[$key] : (isset($value['name']) ? $_data[$value['name']] : ''); $content = ''; $type = isset($value['type']) ? $value['type'] : 'input'; switch(strtolower($type)) { case 'radio': $content = buildRadio($name, $value['option'], $val); break; case 'select': $content = buildSelect($name, $value['option'], $val); break; default: $content = buildInput($name, $val); break; } $title = is_string($value) ? $value : $value['title']; $td .= sprintf(buildTd($title), $content); if($td_count >= $td_limit) { $tr .= $td . "</tr>\r\n"; $td_count = 1; } else { $td_count++; } } if(($td_count = $td_limit - (count($data) % $td_limit)) != $td_limit) { $tr .= $td; $td = ''; for($i=0;$i<$td_count;$i++) { $td .= sprintf(buildTd(''), ''); } $tr .= $td . '</tr>'; } return $tr; } <?php include __DIR__.'/../inc/tool.php'; ?> <?php $user = array( 'user_name' => '姓名<span class="not_null">*</span>', 'user_phone' => '手機號<span class="not_null">*</span>', 'user_cardcode' => '身份證號<span class="not_null">*</span>', 'user_email' => '郵箱', 'user_address' => '地址', 'user_fixedphone' => '固定電話', 'user_qq' => 'QQ號', 'user_household' => '戶籍地址', 'user_bank_name' => '銀行名稱', 'user_bank_card' => '銀行帳號<span class="not_null">*</span>', 'user_bank_account' => '銀行用戶名<span class="not_null">*</span>', 'user_bank_code' => array('title'=>'銀行編號<span class="not_null">*</span>', 'type'=>'select', 'option'=>$bank_no), 'user_bank_phone' => '銀行預留手機號<span class="not_null">*</span>', 'user_ismarital' => array('title'=>'婚姻情況', 'type'=>'radio', 'option'=>$marital), 'user_occup' => array('title'=>'職業', 'type'=>'radio', 'option'=>$occup), '_data' => array(), '_option' => array('td_limit'=>2), ); echo buildTr($user); ?>
魔法常量:php
__FILE__文件的完整路徑和文件名。css
__DIR__文件所在的目錄。html
__FUNCTION__常量返回該函數被定義時的名字java
__CLASS__常量返回該類被定義時的名字jquery
__METHOD__ 類的方法名(PHP 5.0.0 新加)。返回該方法被定義時的名字(區分大小寫)。ajax
__NAMESPACE__ 當前命名空間的名稱(區分大小寫)。此常量是在編譯時定義的(PHP 5.3.0 新增)。正則表達式
這塊有個生成tr的工具,須要學習一下json
還有一個操做是,他這裏面沒有在控制器裏面數組
private static $_instance = null; public static function init() {//調用類裏面的這個方法之後,就能夠直接調用類裏面的其餘方法了 if(self::$_instance === null) { self::$_instance = new self; } return self::$_instance; } $this->response['orgmain'] = Orginfo::init()->instOption();//在這個地方就不用new了,在裏面new過了
申請貸款須要的信息是啥:
1)機構、課程、套餐、費率、還款方式什麼的
這裏有個聯動,自動填充的點了解一下
function n(name) { return $('select[name="'+name+’」]’);//選擇name爲參數name的,這樣的也封爲一個函數學一下這個思想,別那老思想 } var inst = n('edu_inst_code'); function p(name) { return $('input[name="'+name+'"]'); } function readonly(names) {//多個readonly的就封一個這樣的函數 for(i in names) { p(names[i]).prop('readonly', 'readonly'); } } var readOnly = [ 'bank_loan_account', 'bank_loan_name', 'bank_loan_card', 'edu_course_amout', 'edu_grace_period', 'edu_not_period', 'edu_service_rate', 'edu_later_rate', 'edu_rate', 'user_bank_name' ]; readonly(readOnly);
inst.change(function() { var edu_inst_code = $(this).val(), data={edu_inst_code:edu_inst_code};//data是個什麼玩意兒json嗎 p('bank_loan_account').val(''); p('bank_loan_card').val(''); p('bank_loan_name').val(''); ajaxReturn(url('/loanmgr/getbank'), data, function(json) { if(json.retcode !== 0) {// alert(json.msg);return; } if(json.data == '') return; var fieldsArr = [ 'bank_loan_account', 'bank_loan_card', 'bank_loan_name', 'edu_lender_flag' //{'name':'grace_period_repay', 'type':'radio'}, //{'name':'inst_behalf_way', 'type':'select'} ]; for(var i in fieldsArr) { form(fieldsArr[i], json.data); } }); ajaxReturn(url('/loanmgr/getbranch'), data, function(json) { if(json.retcode !== 0) { alert(json.msg);return; } branch.html(buildHtml(json.list, '請選擇分支機構')); }); ajaxReturn(url('/loanmgr/getcourse'), data, function(json) { if(json.retcode !== 0) { alert(json.msg);return; } course.html(buildHtml(json.list, '請選擇課程')); }); ajaxReturn(url('/loanmgr/getplan'), data, function(json) { if(json.retcode !== 0) { alert(json.msg);return; } plan.html(buildHtml(json.list, '請選擇套餐')); }); });
// 執行Ajax,封裝一個執行ajax的函數,因此上面那個不知名的Jason字符串data是傳遞到了這裏 function ajaxReturn(url, data, func) { $.ajax({ cache: true, type: "POST", url:url, data:data, dataType: 'json', error: function(data) { alert('系統異常,請稍後再試!'); }, success: func }); }
職業變化有個聯動,學生、在職、無業,選擇不一樣的職業顯示不一樣的填寫項
// 職業類別 $('input[name="user_occup"]').change(function() { changeName($(this).val(), $(this).parents('form'));//兩個jquery方法須要記住,.parents()找父元素,.find()找後代 }); var edu = '<?php echo buildSelect('user_edu', $edu, 0); ?>'; function changeName(occup, obj) { for(var i=1;i<4;i++) { var occupObj = obj.find('.occup'+i);//選擇哪一個,就顯示哪一個相關選項 if(occup == i) { occupObj.show(); weoccupObj.find('#edu'+i).html(edu); occupObj.find('select,input').prop('disabled', false); } else { occupObj.hide(); occupObj.find('select,input').prop('disabled', true); } } }
<form class="userinfo" id="userinfo0"> <table class="table table-bordered"> <input type="hidden" name="other_loanid" value="" /> <input type="hidden" name="other_userid" value="" /> <tr class="active"> <td colspan="4" class="bold user_title">用戶信息</td> </tr> <?php $user = array( 'user_name' => '姓名<span class="not_null">*</span>', 'user_phone' => '手機號<span class="not_null">*</span>', 'user_cardcode' => '身份證號<span class="not_null">*</span>', 'user_email' => '郵箱', 'user_address' => '地址', 'user_fixedphone' => '固定電話', 'user_qq' => 'QQ號', 'user_household' => '戶籍地址', 'user_bank_name' => '銀行名稱', 'user_bank_card' => '銀行帳號<span class="not_null">*</span>', 'user_bank_account' => '銀行用戶名<span class="not_null">*</span>', 'user_bank_code' => array('title'=>'銀行編號<span class="not_null">*</span>', 'type'=>'select', 'option'=>$bank_no), 'user_bank_phone' => '銀行預留手機號<span class="not_null">*</span>', 'user_ismarital' => array('title'=>'婚姻情況', 'type'=>'radio', 'option'=>$marital), 'user_occup' => array('title'=>'職業', 'type'=>'radio', 'option'=>$occup), '_data' => array(), '_option' => array('td_limit'=>2), ); echo buildTr($user); ?> <tr> <td colspan="4"> <!-- 學生 --> <table class="table table-bordered occup1"> <tr> <td width="15%" class="bold">學生證件號</td> <td width="35%"><input class="form-control" name="user_school_code" type="text" placeholder="" value=""></td> <td width="15%" width="15%" class="bold">專業名稱</td> <td width="35%"><input class="form-control" name="user_school_major" type="text" placeholder="" value=""></td> </tr> <tr> <td class="bold">學校名稱</td> <td><input class="form-control" name="user_school_unit" type="text" placeholder="" value=""></td> <td class="bold">錄取方式</td> <td><?php echo buildRadio('user_school_enroll', $school_enroll, 0); ?></td> </tr> <tr> <td class="bold">入學時間</td> <td> <select name="user_school_time" class="form-control"> <?php for($i=date('Y');$i>=1970;$i--) { $d='%d-00-00';?> <option value="<?=sprintf($d, $i)?>"><?=$i?>年</option> <?php } ?> </select> </td> <td class="bold">學校地址</td> <td><input class="form-control" name="user_school_address" type="text" placeholder="" value=""></td> </tr> <tr> <td class="bold">學校電話</td> <td><input class="form-control" name="user_school_phone" type="text" placeholder="" value=""></td> <!-- <td class="bold"></td>--> <!-- <td></td>--> <td width="15%" class="bold">教育程度</td> <td width="35%" id="edu1"></td> </tr> </table> <!-- 學生 over --> <!-- 在職 --> <table class="table table-bordered occup2"> <tr> <td width="15%" class="bold">教育程度</td> <td width="35%" id="edu2"></td> <td width="15%" class="bold">工做單位</td> <td width="35%"><input class="form-control" name="user_unit_name" type="text" placeholder="" value=""></td> </tr> <tr> <td class="bold">入職時間</td> <td> <select name="user_unit_entrytime" class="form-control"> <?php for($i=date('Y');$i>=2000;$i--) { $d='%d-00-00';?> <option value="<?=sprintf($d, $i)?>"><?=$i?>年</option> <?php } ?> </select> </td> <td class="bold" id="position_name">職位</td> <td><?php echo buildSelect('user_unit_position', $position, 0); ?></td> </tr> <tr> <td class="bold">單位地址</td> <td><input class="form-control" name="user_unit_address" type="text" placeholder="" value=""></td> <td class="bold">單位電話</td> <td><input class="form-control" name="user_unit_phone" type="text" placeholder="" value=""></td> </tr> </table> <!-- 在職 over --> <!-- 無業 --> <table class="table table-bordered occup3"> <tr> <td width="15%" class="bold">教育程度</td> <td width="35%" id="edu3"></td> <td width="15%"></td> <td width="35%"></td> </tr> </table> <!-- 無業 over --> <tr> <td class="bold">面籤方式<span class="not_null">*</span></td> <td><?php echo buildRadio('user_isinterview', $isinterview, 2); ?></td> </tr> <?php foreach($contact_type as $k => $v) { ?> <tr class="active"> <td colspan="4" class="bold"><?php echo $v; ?></td> </tr> <input type="hidden" name="contact_id<?php echo $k; ?>" value="<?php echo $contact[$k]['id']; ?>" /> <tr> <td class="bold">姓名</td> <td><input class="form-control" name="contact_name<?php echo $k; ?>" type="text" placeholder="" value=""></td> <td class="bold">電話</td> <td><input class="form-control" name="contact_phone<?php echo $k; ?>" type="text" placeholder="" value=""></td> </tr> <tr> <td class="bold">關係</td> <td><?php echo buildSelect('contact_relation'.$k, $relation, 0); ?></td> <td class="bold"></td> <td></td> </tr> <?php } ?> <tr class="active"> <td colspan="4" class="bold">照片上傳</td> </tr> <tr> <td> 選擇身份證照片: </td> <td> <input type="file" id="cert_card_img" name="cert_card_img" multiple="multiple" accept="image/*"/> </td> <td> 選擇戶口本照片: </td> <td> <input type="file" id="account_book_img" name = "account_book_img" multiple="multiple" accept="image/*"/> </td> </tr> <tr class="warning"> <td colspan="4" class="bold">操做</td> </tr> <tr> <td class="bold"></td> <td colspan="3" class="btn_opt"> <button type="button" mid="0" class="btn btn_save btn-primary">保存訂單</button> <button type="button" onclick="javascript:jumpUrl(url('/usermgr/userlist'));" class="btn btn-info">返回列表</button> </td> </tr> </table> </form>
// 生成td function buildTd($title) { return str_replace('[]', '%s', sprintf("<td class='bold'>%s</td>\r\n<td>[]</td>\r\n", $title)); }
str_replace(find,replace,string,count)
參數 | 描述 |
---|---|
find | 必需。規定要查找的值。 |
replace | 必需。規定替換 find 中的值的值。 |
string | 必需。規定被搜索的字符串。 |
count | 可選。對替換數進行計數的變量。 |
sprintf(buildTd($title), $content);
*上面有個厲害操做:
$td .= sprintf(str_replace('[]', '%s', sprintf("<td class='bold'>%s</td>\r\n<td>[]</td>\r\n", $title)), $content);
分析下,"<td class='bold'>%s</td>\r\n<td>[]</td>\r\n"這個字符串裏面有兩個部分須要替換,title和content,第一個td填充title,第二個填充content,
不對感受是個畫蛇添足的操做。。直接printf("<td class='bold'>%s</td>\r\n<td>%s</td>\r\n",$title, $content)爲啥還用[]中間轉化一次
像這個這樣
// 生成input function buildInput($name, $value='') { return sprintf('<input class="form-control" name="%s" type="text" placeholder="" value="%s">', $name, $value); }
看明白生成tr是什麼原理:
無不是生成以下的形式<tr><td>title</td><td>content</td></tr><tr><td>title1</td><td>content1</td></tr>
傳遞的參數是以下形式:這兩種
/** * 生成tr * * $lang = array( * 'gender' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')), * 'gender1' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')), * 'gender2' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')), * 'gender3' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')), * ); * * $lang = array(//沒有type即爲文本框 * 'gender' => '機構名稱', * 'gender1' => '性別1', * 'gender2' => '性別2', * 'gender3' => '性別3', * ); */
$org = array(
'edu_inst_code' => array('title'=>'主機構', 'type'=>'select', 'option'=>$orgmain),
'edu_branch_code' => array('title'=>'分支機構', 'type'=>'select', 'option'=>$orgbranch),
'edu_course_code' => array('title'=>'課程', 'type'=>'select', 'option'=>$course),
'edu_plan_code' => array('title'=>'套餐', 'type'=>'select', 'option'=>$case),
'bank_loan_name' => '開戶行名稱',
'bank_loan_account' => '開戶行用戶名',
'bank_loan_card' => '開戶行卡號',
'edu_course_amout' => '課程金額(元)',
'edu_course_cycle' => '課程週期',
'product_prototype' => array('title'=>'還款方式', 'type'=>'radio', 'option'=>$product_prototype),
'edu_grace_period' => '寬限期',
'edu_not_period' => '非寬限期',
'edu_service_rate' => '寬限期服務費率(%%)',
'edu_later_rate' => '非寬限期服務費率(%%)',
'edu_rate' => '貸款利率(%%)',
'money' => '貸款額度(元)<span class="not_null">*</span>',
'grace_period_repay' => array('title'=>'寬限期還款方式', 'type'=>'radio', 'option'=>$grace_period_repay),
'inst_behalf_way' => array('title'=>'機構代還方式', 'type'=>'select', 'option'=>$inst_behalf_way),
'_data' => array(),
'_option' => array('td_limit'=>2),
);
echo buildTr($org);
'_option' => array('td_limit'=>2)這個也是一個比較重要的點,<tr>和<td>的拼接,<tr>比較容易取決於<td>的結束,這裏有個<td>的計數,td_limit=2,兩個<td>結束加上</tr>結束符
下面這段不懂算了。。
if(($td_count = $td_limit - (count($data) % $td_limit)) != $td_limit) { $tr .= $td; $td = ''; for($i=0;$i<$td_count;$i++) { $td .= sprintf(buildTd(''), ''); } $tr .= $td . '</tr>'; }
接着往下看
繼續jquery頁面處理:
主機構選擇聯動變化:
inst.change(function() { var edu_inst_code = $(this).val(), data={edu_inst_code:edu_inst_code}; p('bank_loan_account').val(''); p('bank_loan_card').val(''); p('bank_loan_name').val(''); ajaxReturn(url('/loanmgr/getbank'), data, function(json) { if(json.retcode !== 0) { alert(json.msg);return; } if(json.data == '') return; var fieldsArr = [ 'bank_loan_account', 'bank_loan_card', 'bank_loan_name', 'edu_lender_flag' //{'name':'grace_period_repay', 'type':'radio'}, //{'name':'inst_behalf_way', 'type':'select'} ]; for(var i in fieldsArr) { form(fieldsArr[i], json.data);//學習人家這裏這種時刻封裝,生成form表單,相似Tool中的bulidTr的作法 } }); ajaxReturn(url('/loanmgr/getbranch'), data, function(json) { if(json.retcode !== 0) { alert(json.msg);return; } branch.html(buildHtml(json.list, '請選擇分支機構'));//.html()獲取和設置內容;buildHtml()這個函數放在下面 }); ajaxReturn(url('/loanmgr/getcourse'), data, function(json) { if(json.retcode !== 0) { alert(json.msg);return; } course.html(buildHtml(json.list, '請選擇課程')); }); ajaxReturn(url('/loanmgr/getplan'), data, function(json) { if(json.retcode !== 0) { alert(json.msg);return; } plan.html(buildHtml(json.list, '請選擇套餐')); }); });
function buildHtml(s, t) {//s爲全部選項的內容,t爲標題
var h = ['<option value="">'+t+'</option>'];
$.each(s, function(i, n) {//循環全部的內容
h.push('<option value="'+i+'">'+n+'</option>');
});
return h.join("\r\n");
}
arrayObj.join(separator); //返回字符串,這個字符串將數組的每個元素值鏈接在一塊兒,中間用 separator 隔開。
jquery對數組的操做:
建立:[];例,var h=['<option value="">'+t+'</option>']或者以下這種
var fieldsArr = [
{'name':'grace_period_repay', 'type':'radio'},
{'name':'inst_behalf_way', 'type':'select'}
];
添加:push;例,h.push('<option value="'+i+'">'+n+'</option>')或者
fieldsArr.push(
'bank_loan_account',
'bank_loan_card',
'bank_loan_name'
);
數組元素字符串華:.join(separator),返回字符串,這個字符串將數組的每個元素值鏈接在一塊兒,中間用 separator 隔開;例,h.join("\r\n")
*這裏下拉框有個知識點,進入頁面默認顯示$course = array(''=>'請選擇課程');'edu_course_code' => array('title'=>'課程', 'type'=>'select', 'option'=>$course),echo buildTr($org);生成select標籤,選定了主機構之後,利用機構編號下面的選擇框獲取到數據填充,buildHtml(s, t)添加數據
寫HTML代碼的時候,能夠內嵌PHP代碼使用tool.php中的buildTr函數來建立,jquery代碼中不能夠內嵌PHP代碼,就封裝兩個函數一個是buildHtml一個是form函數
接着研究,下面看一下jquery中的form函數是怎麼使用的,
// 套餐下拉切換 plan.change(function() { ajaxReturn(url('/loanmgr/doplan'), {code:$(this).val()}, function(json) {
//看一下json傳的是什麼樣的數據
if(json.retcode !== 0) { alert(json.msg);return; } var fieldsArr = [ {'name':'product_prototype', 'type':'radio'}, 'edu_grace_period', 'edu_not_period', 'edu_service_rate', 'edu_later_rate', 'edu_rate' ]; for(var i in fieldsArr) { form(fieldsArr[i], json.data); } }); }); function form(o, v) { var type, name; if(typeof o == 'object') {//typeof是是判斷數據類型的
//針對的是這種形式的元素:{'name':'prodect_prototype','type':'radio'} type = o.type; name = o.name; } else {
//針對的是這樣的元素:'edu_grace_period' type = 'input'; name = o; } v = v[name]; if(v == undefined) return; switch(type) { case 'radio': radio(name, v); break; case 'select': select(name, v); break; default: input(name, v); } }
//阻止默認事件.好比當你點擊帶有href值的a標籤時,元素響應click事件後,還會發生頁面跳轉.若是加上這個方法(屬性)後,瀏覽器只會響應click事件,不會發生跳轉.
p('product_prototype').click(function(e) { e.preventDefault() });
捋一下產品信息模塊的juery實現,下面是全部的代碼
inst.change(function() { var edu_inst_code = $(this).val(), data={edu_inst_code:edu_inst_code}; p('bank_loan_account').val(''); p('bank_loan_card').val(''); p('bank_loan_name').val(''); ajaxReturn(url('/loanmgr/getbank'), data, function(json) { if(json.retcode !== 0) { alert(json.msg);return; } if(json.data == '') return; var fieldsArr = [ 'bank_loan_account', 'bank_loan_card', 'bank_loan_name', 'edu_lender_flag' //{'name':'grace_period_repay', 'type':'radio'}, //{'name':'inst_behalf_way', 'type':'select'} ]; for(var i in fieldsArr) { form(fieldsArr[i], json.data); } }); ajaxReturn(url('/loanmgr/getbranch'), data, function(json) { if(json.retcode !== 0) { alert(json.msg);return; } branch.html(buildHtml(json.list, '請選擇分支機構')); }); ajaxReturn(url('/loanmgr/getcourse'), data, function(json) { if(json.retcode !== 0) { alert(json.msg);return; } course.html(buildHtml(json.list, '請選擇課程')); }); ajaxReturn(url('/loanmgr/getplan'), data, function(json) { if(json.retcode !== 0) { alert(json.msg);return; } plan.html(buildHtml(json.list, '請選擇套餐')); }); }); // 分支下拉切換 branch.change(function() { ajaxReturn(url('/loanmgr/dobranch'), {code:$(this).val()}, function(json) { if(json.retcode !== 0) { alert(json.msg);return; } var fieldsArr = [ {'name':'grace_period_repay', 'type':'radio'}, {'name':'inst_behalf_way', 'type':'select'} ]; if(p('edu_lender_flag').val() != '1') { // 若是是分支機構帳號 fieldsArr.push( 'bank_loan_account', 'bank_loan_card', 'bank_loan_name' ); } for(var i in fieldsArr) { form(fieldsArr[i], json.data); } }); }); // 課程下拉切換 course.change(function() { ajaxReturn(url('/loanmgr/docourse'), {code:$(this).val()}, function(json) { if(json.retcode !== 0) { alert(json.msg);return; } var fieldsArr = [ 'edu_course_amout', 'edu_course_cycle' ]; for(var i in fieldsArr) { form(fieldsArr[i], json.data); } }); }); // 套餐下拉切換 plan.change(function() { ajaxReturn(url('/loanmgr/doplan'), {code:$(this).val()}, function(json) { if(json.retcode !== 0) { alert(json.msg);return; } var fieldsArr = [ {'name':'product_prototype', 'type':'radio'}, 'edu_grace_period', 'edu_not_period', 'edu_service_rate', 'edu_later_rate', 'edu_rate' ]; for(var i in fieldsArr) { form(fieldsArr[i], json.data); } }); });
// 執行Ajax
function ajaxReturn(url, data, func) {
$.ajax({
cache: true,
type: "POST",
url:url,
data:data,
dataType: 'json',
error: function(data) {
alert('系統異常,請稍後再試!');
},
success: func
});
}
整個的邏輯是這樣,顯示主機構選擇是,獲取到分支機構、課程、套餐、開戶行等信息,進行填充,具體是這樣一開始生成HTML的時候沒有數據,只有一個選項-請選擇xxx,選擇後填充時將對應的請選擇xxx和相應數據拼接填充,
**接着研究添加貸款信息那塊,這麼沒有好好,返回來再好好看看
添加貸款人信息這個功能是同一個機構添加多個貸款學生的話,就用這個添加。這個案件永遠在最下邊
<?php if(empty($readonly)) { ?>//$readonly是標識權限的b變量,若是隻讀的話,不會顯示添加貸款人信息這個按鈕 <div class="bs-glyphicons" id="table-form"> <a href="javascript:newBranchForm();"> <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> <span class="glyphicon-class">添加貸款人信息</span> </a> </div> <?php } ?>
// 添加貸款用戶表單
function newBranchForm() {
addLoaninfo();
}
// 添加貸款用戶表單
function addLoaninfo() {
//這個的意思是取到那個form,進行拷貝,對新的form進行改造
var userinfo=$('#userinfo'), mClone=userinfo.clone(), count=$('.userinfo').size();
mClone.attr('id', 'userinfo'+count);
mClone.find('.user_title').html('新增用戶信息');
mClone.find('.btn_save').attr('mid', count);
mClone.find('input[name="user_occup"]').change(function() {
changeName($(this).val(), $(this).parents('form'));
});
mClone.find('input[name="user_isdoubtful"]').change(function() {
isDoubtful($(this).val(), $(this).parents('form'));
});
mClone.show();
$('#table-form').before(mClone);
$('.btn_save').unbind().click(saveBranchOrg);
}
$('.btn_save').click(saveBranchOrg);
//這個函數做用是啥,
function changeName(occup, obj) {
for(var i=1;i<4;i++) {
var occupObj = obj.find('.occup'+i);
if(occup == i) {
occupObj.show();
occupObj.find('#edu'+i).html(edu);
occupObj.find('select,input').prop('disabled', false);
} else {
occupObj.hide();
occupObj.find('select,input').prop('disabled', true);
}
}
}
// 保存分支機構信息
function saveBranchOrg() {
var self=$(this), data=JSON.stringify($('#userinfo'+self.attr('mid')).serializeArray()), order=JSON.stringify($('#orginfo').serializeArray());
ajaxReturn(url('/loanmgr/saveloan'), {userinfo:data, orderinfo:order}, function(json) {
if(json.retcode == 0) {
var branch = $('#userinfo'+self.attr('mid')).find('.user_title');
if(branch.size() != 0) {
$('input[name="other_loanid"]').val(json.loanid);
$('input[name="other_userid"]').val(json.userid);
// 上傳圖片
sendImg(json.userid,json.loanid);
var branchHtml = '用戶信息 ( 訂單編號:<span style="color:#D9534F;">'+json.loancode+'</span> )';
branch.html(branchHtml);
}
} else {
alert(json.msg);
}
});
}
function sendImg(userid,loanid){
var cert_card_img = document.getElementById( "cert_card_img" ).files;
var account_book_img = document.getElementById( "account_book_img" ).files;
var fd = new FormData();
fd.append('cert_card_img1', cert_card_img[0]);
fd.append('cert_card_img2', cert_card_img[1]);
fd.append('cert_card_img3', cert_card_img[2]);
fd.append('account_book_img1', account_book_img[0]);
fd.append('account_book_img2', account_book_img[1]);
fd.append('account_book_img3', account_book_img[2]);
fd.append('userid', userid);
fd.append('loanid', loanid);
var xhr = new XMLHttpRequest();
xhr.open("post", url('/loanmgr/saveimg'), true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.send(fd);
xhr.onreadystatechange = function(){
if (xhr.readyState==4 && xhr.status==200) {
alert("添加成功")
}
if (xhr.readyState==4 && xhr.status!=200) {
alert("添加失敗")
}
}
}
// 是否可編輯,這個也是權限控制的一種方法,若是權限是隻讀的話不能夠保存 <?php if(!empty($readonly)) { ?> $('input,textarea').prop('readonly', true); $('select,.btn_save,.btn_del,input:radio,.btn_operate').prop('disabled', true); <?php } else { ?> //$('.loan_disabled').find('select,input,.btn_save').prop('disabled', true); <?php } ?>
當輸入域失去焦點 (blur) 時改變其顏色:
$("input").blur(function(){
$("input").css("background-color","#D6D6FF");
});
jQuery json處理看一下
JSON.parse(jsonString): 在一個字符串中解析出JSON對象
JSON.stringify(obj) : 將一個JSON對象轉換成字符串(json字符串轉化爲json字符串)
jQuery.parseJSON(jsonString) : 將格式無缺的JSON字符串轉爲與之對應的JavaScript對象
JSON.parse()和jQuery.parseJSON()的區別:有的瀏覽器不支持JSON.parse()方法,使用jQuery.parseJSON()方法時,在瀏覽器支持時會返回執行JSON.parse()方法的結果,不然會返回相似執行eval()方法的結果
接下來看啥呢,怎麼生成訂單和帳單
下單操做
*學一下催收中心的權限管理那部分
正則表達式也要看看