Fungsi untuk dilaksanakan: Apabila menambah maklumat pelajar, gunakan fungsi pengesahan easyui untuk menentukan sama ada nombor pelajar diulang dan nombor pelajar hanya boleh menjadi nombor
Kesan akhir adalah seperti yang ditunjukkan di bawah:
Tetapi dalam proses melakukan ini, saya menghadapi beberapa siri masalah:
Kembangkan kaedah pengesahan validatebox Kod pengesahan awal adalah seperti berikut:
//学号格式只能为数字 ****//这里没有问题**** number: {//value值为文本框中的值 validator: function (value) { var reg = /^[0-9]*$/; return reg.test(value); }, message: '学号格式不正确.' }, //验证学号不能重复 snumber: { //param参数为textarea的id值 validator: function (value, param) { //将从后台获取的json数据先放入textarea,再获取出来后解析成数组 var snumbers = $.parseJSON($(param)[0].val()); for(var i=0;i < snumbers.length;i++){ if(value == snumbers[i]){ //如果学号有重复返回false return false; } } return true; }
Di sini kami hanya akan melakukan pengesahan semula ID pelajar kerana terdapat masalah lain dan kami juga menghadapi beberapa masalah:
Borang ditulis seperti ini pada mulanya, atribut validType ditulis dalam atribut data-options:
<input id="addSnumber" class="easyui-textbox" style="width: 200px; height: 30px;" type="text" name="snumber" data-options="required:true,validType:'snumber[#snumbers]', missingMessage:'请输入学号'" /> <textarea id="snumbers" style="display: none"></textarea>
Terdapat masalah di sini: Firebug akan melaporkan ralat semasa menulis dengan cara ini, kerana #snumbers perlu disertakan dalam tanda petikan, tetapi menambah tanda petikan secara langsung akan menyebabkan ralat ini bersamaan dengan tanda petikan tiga kali ganda banyak maklumat di Internet, dan ada yang menggunakan melarikan diri. Saya rasa ini adalah masalah dengan penghuraian easyui, melainkan kod sumber easyui diubah. Jika ada sesiapa yang tahu mengenainya, sila berikan pencerahan kepada saya.
Kemudian letakkan atribut validType di luar dan pengesahan berjaya, seperti berikut:
<input id="addSnumber" validType="snumber['#snumbers']" class="easyui-textbox" style="width: 200px; height: 30px;" type="text" name="snumber" data-options="required:true, missingMessage:'请输入学号'" /> <textarea id="snumbers" style="display: none"></textarea>
Kemudian timbul persoalan baru, bagaimana untuk menambah pengesahan format nombor pelajar?
Beginilah cara saya menulisnya. Saya rasa ia masih merupakan masalah tanda petikan tiga kali. Saya telah mencuba pelbagai kaedah tetapi tidak berjaya
<input id="addSnumber" validType="['snumber['#snumbers']', 'number']" class="easyui-textbox" style="width: 200px; height: 30px;" type="text" name="snumber" data-options="required:true, missingMessage:'请输入学号'" /> <textarea id="snumbers" style="display: none"></textarea>
Saya menghadapi dua masalah di sini Satu ialah cara meletakkan data yang dikembalikan oleh ajax ke dalam atribut validType, iaitu, tanpa menggunakan kawasan teks lain untuk menyimpan data yang Tidak Selesai
Masalah kedua ialah tetapan dinamik kawalan easyui adalah tidak sah
<input id="addSnumber" style="width: 200px; height: 30px;" type="text" name="snumber" /> //设置easyui控件 $("#addSnumber").attr("class", "easyui-textbox"); //设置验证属性 $("#addSnumber").attr("validType","snumber['#snumber']"); 上面这样在jQuery里设置easyui控件后,没有效果,后来百度了下,动态添加easy控件后需要重新渲染下,如下: //设置easyui控件 $("#addSnumber").attr("class", "easyui-textbox"); //设置验证属性 $("#addSnumber").attr("validType","snumber['#snumber']"); //解析所有页面 $.parser.parse();
//设置easyui控件 $("#addSnumber").attr("class", "easyui-textbox"); //设置验证属性 $("#addSnumber").attr("validType","snumber['#snumber']"); //解析指定元素 $.parser.parse($("#addSnumber"));
Jadi jika anda ingin membuat satu elemen, anda perlu menulisnya seperti ini:
//设置easyui控件 $("#addSnumber").attr("class", "easyui-textbox"); //设置验证属性 $("#addSnumber").attr("validType","snumber['#snumber']"); //解析指定元素,找它的父元素 $.parser.parse($("#addSnumber").parent());
Jadi akhirnya, operasi mendapatkan semua ID pelajar dimasukkan ke dalam fungsi pengesahan, seperti berikut:
//验证学号不能重复 snumber: { validator: function (value) { var flag = true; $.ajax({ type: "post", async: false, url: "/sims/StudentServlet?method=AllSNumber", success: function(data){//在验证函数里加载数据,加载过来后判断输入的值 var snumbers = $.parseJSON(data); for(var i=0;i < snumbers.length;i++){ if(value == snumbers[i]){ flag = false; break; } } } }); return flag; }, message: '学号重复' },
//验证表单 var validate = $("#editStuForm").form("validate"); if(!validate){ $.messager.alert("消息提醒","请检查你输入的数据!","warning"); return; } else{ //提交 }
<input id="addSnumber" class="easyui-textbox" validType="'snumber', 'number'" style="width: 200px; height: 30px;" type="text" name="snumber" data-options="required:true, missingMessage:'请输入学号'" />
<input id="addSnumber" class="easyui-textbox" style="width: 200px; height: 30px;" type="text" name="snumber" data-options="required:true, validType:['snumber', 'number'], missingMessage:'请输入学号'" />
//学号格式只能为数字 number: {//value值为文本框中的值 validator: function (value) { var reg = /^[0-9]*$/; return reg.test(value); }, message: '学号格式不正确.' }, //验证学号不能重复 snumber: { validator: function (value) { var flag = true; $.ajax({ type: "post", async: false, url: "/sims/StudentServlet?method=AllSNumber", success: function(data){//在验证函数里加载数据,加载过来后判断输入的值 var snumbers = $.parseJSON(data); for(var i=0;i < snumbers.length;i++){ if(value == snumbers[i]){ flag = false; break; } } } }); return flag; }, message: '学号重复' },
<tr> <td>学号:</td> <td> <input id="addSnumber" class="easyui-textbox" style="width: 200px; height: 30px;" type="text" name="snumber" data-options="required:true, validType:['snumber', 'number'], missingMessage:'请输入学号'" /> </td> </tr>
OK! ! ! Kebanyakannya diringkaskan oleh saya sendiri selepas banyak percubaan Saya masih tidak memahami prinsip banyak perkara. Saya fikir ia adalah masalah dengan easyui.min.js semua orang.