1. 程式人生 > >JS+jQuery+Easyui實現動態新增控制元件及賦值

JS+jQuery+Easyui實現動態新增控制元件及賦值

背景:某天陽光明媚的午後,和小夥伴們完一個遊戲,在一個黑箱中放了紅橙黃綠青藍紫七種顏色的球,我讓幾名玩遊戲的小夥伴分別從黑箱裡抓球,並且統計他們都抓了哪種顏色的球。。最後的結果是,有抓的多,有抓的少,抓到的顏色也不一樣。

那麼問題來了!!

如果讓你做一個統計軟體怎麼記錄小夥伴的都抓了幾個球並且什麼顏色的球?

以下是asp程式碼:

<span style="font-size:12px;"><span style="font-size:14px;"><!DOCTYPE html>
   
<head>
    <title>Index</title>
    <script src="../../Scripts/MyScript/Checkpeople.js"></script>
    <link href="../../CSS/test.css" rel="stylesheet" />
    <script src="../../Scripts/StartExam/StartExam.js"></script>
    
    <script src="../../Content/jquery-easyui-1.3.2/locale/easyui-lang-zh_CN.js"></script>    
    <script type="text/javascript" src="../../Content/jquery-easyui-1.3.2/jquery.easyui.min.js"></script>
    <link rel="stylesheet" type="text/css" href="../../Content/jquery-easyui-1.3.2/themes/default/easyui.css">
    <link rel="stylesheet" type="text/css" href="../../Content/jquery-easyui-1.3.2/themes/icon.css">

<div id="mainbody">
    <div id="bodytitle">玲博拿到的球</div>
       
    <table id="tab1" align="center" style="padding-top:100px" border="0" cellPadding="1" cellSpacing="0" borderColorLight="#999999" borderColorDark="#ffffff" style="width:50%;word-break: break-all">
        
       <tr >
	 <td >
             <input type="hidden" name="fuJ" id="fuJ1" />
         </td> 
         <td id="Exam0" class="firstline" align="right">顏色</td>
         <td><input id="MainTeacher" class="easyui-combobox" data-options="" align="center"/></td>
         <td><a type="button"class="easyui-linkbutton" name="Submit" value="增加一行" data-options="iconCls:'icon-add'" onclick="javascript: AddRow();" />
	     <a type="button"class="easyui-linkbutton" name="Submit" value="刪除一行" data-options="iconCls:'icon-remove'" onclick="javascript: DelRow();" />
        </tr>

        <tr>         
          <td><input type="checkbox" id="box1" onClick="GetRow()"/></td> 
              <input type="hidden" name="fuJ"/>      
          <td id="Exam0" class="firstline" align="right">顏色</td>
          <td><input id="cc1" name="dept" value=""> </td>
         </tr>
         <script type="text/javascript">
             $('#cc1').combobox({
                 valueField: 'ID',
                 textField: 'ColorBall',
                 url: '/PlayGame/ColorBall'
                 });
         </script>
     </table>   

Js程式碼-在上面程式碼中引用

<span style="font-size:12px;"><span style="font-size:14px;">////新增一行
	$(document).ready(function () {
	    //刪除按鈕載入減號
	    $('#btn_Add2').combobox({
	       cache: false,
	       iconCls: 'icon-remove'
	       })
	     //新增按鈕載入加號
	     $('#btn_Add1').combobox({
	        cache: false,
	        iconCls: 'icon-add'
	        })
	
	     //第一行顏色,賦值
	     $('#MainTeacher').combobox({
	        valueField: 'year',
	        textField: 'year',
	        url: '/AddExam/GetGrade'
	        })
	    
	function AddRow() {
	     //新增一行
	     var i = tab1.rows.length;//頁面上存在行數
	     var Nam = "'div1'";
	     var Cod = "fuJ" + i;
	     var newTr = tab1.insertRow();
	     //新增列
	     var newTd0 = newTr.insertCell();
	     var newTd1 = newTr.insertCell();
	     var newTd2 = newTr.insertCell();
	     var newTd3 = newTr.insertCell();
	     //設定列內容和屬性
	     newTd0.innerHTML = '<input type="checkbox" id="box1" onClick="GetRow()"/ /><input type="hidden" name="fuJ" id=' + Cod + ' />';
	     newTd1.innerHTML = '<td id="Exam0" class="firstline" align="right">顏色</td>';
	     newTd2.innerHTML = '<td><input id="cc" name="test" class="easyui-combobox"/></td>';
	     $("#cc").combobox({
	        valueField: 'year',
	        textField: 'year',
	        url: '/AddExam/GetGrade'
	      })  
	    }
	    
	    
	
	function DelRow()
	{
	    //刪除一行
	    var shu=0;
	    var cheCou=document.all("box1");//頁面上所有的複選框
	    for(var i=1;i<cheCou.length;i++)//
	    {
	        if (cheCou[i].checked==true)
	        {
	            shu++;
	        }
	    }
	    if(shu==cheCou.length)
	    {
	        alert('最少要新增一個數據');
	        return;
	    }
	    else  if(shu==0)
	    {
	        alert('請選擇你要刪除的資訊');
	        return;
	    }
	    else if(shu==2)//
	    {
	        for(var i=1;i<cheCou.length;i++)//
	        {
	            if(cheCou[i].checked==true)
	            {
	                tab1.deleteRow(i+1);
	            }
	        }
	    }
	    else if(shu>1)
	    {
	        for(var a=0;a<shu;a++)
	        {
	            for(var i=0;i<cheCou.length;i++)
	            {
	                if(cheCou[i].checked==true)
	                {
	                    tab1.deleteRow(i+1);
	                    break;
	                }
	            }
	        }
	    }
	}
	function GetRow()
	{
	    //獲得行索引
	    //兩個parentElement分別是TD和TR喲,rowIndex是TR的屬性
	    cGetRow=window.event.srcElement.parentElement.parentElement.rowIndex;
	}
     經過了修改和測試,得到上面的程式碼就可以實現動態的新增頁面中的控制元件,但是它並不是最完美的程式碼,還有很多問題需要解決:例如考慮到給使用者帶來方便,預設給使用者加載出預設值,這樣就可以讓使用者儘可能的少操作軟體,體驗軟體帶來的方便;新增一個控制元件之後後面的控制元件是沒有辦法獲取值,這裡就要用到迴圈載入控制元件及賦值;對於頁面中新增多餘的軟體進行動態的刪除。最後將頁面資料儲存到資料庫中。

     上面的程式碼只是千千萬萬中方法中的一種,還有很多其他更為靈活和方便的方法需要去試驗和比對。博主繼續測試,然後在分享給大家。。


相關推薦

JS+jQuery+Easyui實現動態新增控制元件

背景:某天陽光明媚的午後,和小夥伴們完一個遊戲,在一個黑箱中放了紅橙黃綠青藍紫七種顏色的球,我讓幾名玩遊戲的小夥伴分別從黑箱裡抓球,並且統計他們都抓了哪種顏色的球。。最後的結果是,有抓的多,有抓的少,抓到的顏色也不一樣。 那麼問題來了!! 如果讓你做一個統計軟體怎麼記錄

Delphi 動態建立控制元件,使用

 uses 中定義: type   TMyComponent = class(TComponent)   public     item1, item2, item3, item4, item5, item6: string;     constructor Crea

jQuery EasyUI動態新增控制元件或者ajax載入頁面後不能自動渲染問題的解決方法

現象:        AJAX返回的html無法做到自動渲染為EasyUI的樣式.比如:class="easyui-layout" 等 處理方法:       在html片段載入完畢後使用 Js程式碼   $.parser.parse(context)        即可重新渲染。 實現

android 動態新增控制元件實現每個子控制元件的點選事件

         需求:我們要點選進入一家店鋪,根據不同的店鋪,顯示不同條數的子條目 如:消毒間,洗菜間等。。。這些都是或多或少的,所以需要動態新增:    首先自定義View(linearLayout): package cn.qust.fang.widget; imp

安卓動態新增控制元件_向LinearLayout中增加控制元件

背景:        在有些情況下,需要通過程式碼自動向頁面內增加控制元件,而不是事先在xml檔案中寫好。本文介紹向LinearLayout中增加控制元件。 解決方案:     1.新增單個控制元件樣例       LinearLayout layout = find

winform 中panel動態新增控制元件座標原點問題

問題描述 最近在寫winform程式的時候遇到一個小問題,目標效果是類似QQ的聊天對話方塊,每傳送一條訊息會在介面上顯示傳送方的頭像、傳送氣泡、以及訊息內容,如圖 按照原來的想法,每條訊息都是一個獨立的panel,然後在主介面的大的panel中add每一

Android動態新增控制元件約束位置

用LayoutParams: RelativeLayout insertLayout = (RelativeLayout)view1.findViewById(R.id.screen);//screen是一個RelativeLayout 佈局的id ImageView imgApple2 = new

C#解決動態新增控制元件時,控制元件閃爍的問題

近段時間一直用C#來做開發,但是C#控制元件太多或者動態新增的控制元件,控制元件一直一閃一閃的,始終不知道什麼問題。 各種度娘,沒去谷哥,因為上不去,你懂得。 翻遍了很多資料,都在說雙快取,還有什麼圖片什麼的,各種程式碼嘗試無效,之後看到CSDN一個帖子,看完之後發現這一段程式碼真的解決了閃爍的問題!原理我還

AJAX——動態新增控制元件(複選框)

需求:使用者根據自己的需求,配置下拉框中的欄位。 解決思路:使用者配置下拉框中的欄位(例如:高階查詢,基礎資訊),動態新增複選框控制元件。使用者再對複選框進行勾選,最終結果是,基礎資訊中的,高階查詢下拉框中為使用者勾選的欄位。 前臺程式碼: <asp:Content

動態新增控制元件並顯示滾動條

        今天做一個功能,一個LinkLabel上顯示資訊為“ 附件('附件個數')”,並在滑鼠指標移動到此LinkLabel上的時候彈出一個框依序顯示相應數量的LinkLabel,把對應附件名稱繫結到LinkLabel上,點選LinkLabel開啟對應附件。本來之前

Ext.NET -- 後臺動態新增控制元件

protected void btnAddItem_Click(object sender, EventArgs e) { int index = this.GetIndexVal(); //Ext.

VB.NET實現動態載入控制元件陣列

vb.net中沒有控制元件陣列,它也不主張用控制元件陣列,因為它對記憶體的開銷非常大。控制元件陣列問題在.NET中完全有其它方法代替。如果一定要用     for   i   as   integer   to   20

HorizontalScrollView動態新增控制元件並可以移動到點選的控制元件的位置

點選“第4期”後的效果圖為 程式碼: mScrollView = (HorizontalScrollView)findViewById(R.id.scroll_view); mLinear = (LinearLayout)findViewById(R.id.line

GridLayout上動態新增控制元件

Android上GridLayout和java上的感覺差不多,但是在添加布局內部新增控制元件就不是那麼容易了。 grid = (GridLayout)findViewById(R.id.grid); //獲取GridLayout控制元件 int count=1;

Android開發FrameLayout動態新增控制元件位置問題

       首先FrameLayout的子控制元件預設都是從左上角顯示的,還有最後新增的在最前面顯示。         一般是對FrameLayout.LayoutParams params進行操作

【JavaScript】動態新增控制元件

<script type="text/javascript"> //<!--動態新增檔案瀏覽框函式--> function insertElement() {

RelativeLayout動態新增控制元件(2)

前言:以前曾寫過一篇關於動態生成控制元件的文章《動態新增控制元件及將某XML動態加入到Activity顯示》,比較淺顯,對於RelativeLayout的相關佈局設定方法及相對佈局與線性佈局的混合使用的相關內容都沒有進行深入討論。今天再次涉及到這些內容,就不再單獨討論相對佈局的相關設定內容了,直接從相對佈

Wpf 動態新增控制元件設定樣式

新公司主要用wpf做專案,之前也沒有接觸過這類東西,經過一週的學習發現wpf的頁面佈局,樣式設定和網頁設計差不多。 兩者都有樣式檔案可以為控制元件統一設定樣式,就連優先順序都差不多,發現還挺有意思。下面進入正題,怎樣在程式執行後動態新增控制元件。   要想新增控制元件,容器

WPF 向Grid中動態新增控制元件

private void Window_Loaded(object sender, RoutedEventArgs e){MyGrid.RowDefinitions.Add(new RowDefinition()); //新增行MyGrid.RowDefinitions.A

Fragment動態新增控制元件(Button/Layout/...)

最近在研究Andriod5.0系統Settings原始碼的修改,從主介面進去Settings中大部分都是使用Fragment,Fragment的頁面修改是通過重修onCrearteCiew()方法來實現的,下面是我把View的高度修改為800畫素,預留部分空間來