1. 程式人生 > >js動態控制表單的顯示和隱藏

js動態控制表單的顯示和隱藏

文章一:

無論是事先寫好的,還是動態生成的,要找到指定的tr或td都必須知道其相關的一個屬性,未必必須是id或name,然後無論是在一個table還是多個 table都可以通過document.getElementsByTagNames( "tr ")或td,取得集合,……再根據知道的屬性再找,最後設定顯示/隱藏

方法一: 
document.getElementById( "控制元件ID ").style.visibility= "hidden "; 
document.getElementById( "控制元件ID ").style.visibility= "visible "; 
方法二: 
document.getElementById( "控制元件ID ").style.display= "none "; 
document.getElementById( "控制元件ID ").style.display= "inline "; 
方法一隱藏後   頁面的位置還被控制元件佔用   只是不顯示   類似於.net驗證控制元件的Display=Static 
方法二隱藏後   頁面的位置不被佔用   類似於.net驗證控制元件的Display=Dynamic

我寫的一個根據下拉選單的不同選擇值來顯示下邊的一個input表單的顯示和隱藏

js:

function listchange(){
    
    var sel=document.getElementsByName('tasklist_type');
    for(var i=0;i<tasklist_type.options.length;i++)
    {
     if(tasklist_type.options[i].selected)
     {
      if(tasklist_type.options[i].value==0){
        document.getElementById( "tasklistoriginalno").style.display= "none";
        document.getElementById("tasklist_originalno").value = "";

/*上面紅色的這句話用處很大的,因為你想隱藏掉下面的一個表單,那麼這個表單的值也就不需要寫入資料庫了,所以記得在隱藏的同時將被隱藏表單的值清空;當然要是你不嫌麻煩的話在表單的資料提交到php的資料處理頁面的時候對 tasklist_type根據其值是0還是1來行進判斷寫不寫入 tasklist_originalno的值 */
      }
      if(tasklist_type.options[i].value==1){
        document.getElementById( "tasklistoriginalno").style.display= "";
      }
     }
    }
     
}

html:

                <tr height='30'>
                 <td>&nbsp;<{$lang_tasklist_type}>: </td>
                 <td>
                    <select name="tasklist_type" id="tasklist_type"  onchange="listchange();return false;">
                        <option value="null" ><{$lang_tasklist_sel}></option>
                        <option value="0" ><{$lang_tasklist_common}></option>
                        <option value="1" ><{$lang_tasklist_supplement}></option>
                    </select>
                </td>
             </tr>
             <tr height='30'  id='tasklistoriginalno'>
               <td>&nbsp;<{$lang_tasklist_originalno}>:</td>
               <td colspan='3'><input type='text'  id='tasklist_originalno' name='tasklist_originalno'/></td>
             </tr>

---------------------------------------------------------------------------------------------

上面的程式碼在IE6和FF下都能成功實現效果,但是在IE8下不能得到相應的效果,原因出在在IE8下用上面的程式碼無法獲取到下拉列表的值,經測試下面的程式碼可以:

js

function listchange()
{    
    var sel=document.getElementsByName("tasklist_type")[0].value; //獲取下拉表單的value值
    
    if(sel=='0')
     {
          document.getElementById( "tasklistoriginalno").style.display= "none"; //隱藏id為tasklistoriginalno的td
          document.getElementById("tasklist_originalno").value = ""; //並將其值賦為空
     }
                
    if(sel=='1')
     {
         document.getElementById( "tasklistoriginalno").style.display= ""; //當下拉表單的值為0時顯示
     } 
}

下面是測試的例子,也是我在網上看到的,我們將其copy到儲存到一個html頁面中在IE8下開啟,OK:

<!--有表單---->

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  <script type="text/javascript">
      function optChange(){
        var name=document.areaName.area.options[document.areaName.area.selectedIndex].text;
        alert(name);
      }
  </script>
  <body>
    <form name="areaName">
    <select name="area" onchange="optChange()">
     <option  value="上海">上海</option>
     <option value="南京">南京</option>
     <option value="北京">北京</option>
     <option value="成都">成都</option>
     <option value="長沙">長沙</option>
     <option value="山西">山西</option>
    </select>
    </form>
  </body>
</html>

<!---無表單--->



<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  <script type="text/javascript">
      function optChange(){
       var name=document.getElementsByName("area")[0].value; 
        alert(name);
      }
  </script>
  <body>
    <select name="area" onchange="optChange()">
     <option  value="上海">上海</option>
     <option value="南京">南京</option>
     <option value="北京">北京</option>
     <option value="成都">成都</option>
     <option value="長沙">長沙</option>
     <option value="山西">山西</option>
    </select>
  </body>
</html >

文章二:

<input type=radio name=aa value=yes onclick=bb.style.display='none'>yes
<input type=radio name=aa value=no onclick=bb.style.display='block'>no<br>
<div id=bb style=display:none><input type=text name=cc></div><br>
<input type=button value=submit>

我把程式碼稍稍改動了一點,實際效果如下,主要是標準問題。

 顯示  不顯示
<script type="text/javascript">
function show(){
document.getElementById("test").style.display = "block";
}
function hide(){
document.getElementById("test").style.display = "none";
}
</script>
<input type="radio" name="group1" value="yes" onchange="show()" />顯示
<input type="radio" name="group1" value="no" onchange="hide()" />不顯示
<div id="test" style="display:none">
<input type="text" />
</div>

相關推薦

js動態控制顯示隱藏

文章一: 無論是事先寫好的,還是動態生成的,要找到指定的tr或td都必須知道其相關的一個屬性,未必必須是id或name,然後無論是在一個table還是多個 table都可以通過document.getElementsByTagNames( "tr ")或td,取得集合,……

js動態控制的tr,td的顯示隱藏

無論是事先寫好的,還是動態生成的,要找到指定的tr或td都必須知道其相關的一個屬性,未必必須是id或name,然後無論是在一個table還是多個 table都可以通過document.getElementsByTagNames( "tr ")或td,取得集合,……再根據知道

AngularJS 中,通過 radio來控制元素的顯示隱藏,以及控制元素的 disabled

程式碼如下 <lable> <input type="radio" ng-value="true" name="radio-test" ng-model="radioVal

控制窗體的顯示隱藏

pan nbsp 延時 class pre span win32 隱藏 div 1 import win32con 2 import win32gui 3 import time 4 5 # 找出窗體的編號 6 TIMWin = win32gui.FindW

jQuery---用jq實現控制元件的顯示隱藏

因為發現這個功能用的比較頻繁,所以分享一下: 先說一下,隱藏控制元件有兩種方式:style="visibility: hidden;"和style="display: none;",個人比較喜歡使用style="display: none;",因為style="visibility: h

擴充套件EasyUI datagrid 增加表頭右鍵選單功能,可動態對列進行顯示隱藏

mysql關於varchar和text欄位的疑問mysql關於varchar和text欄位的疑問 mysql關於varchar和text欄位的疑問mysql關於varchar和text欄位的疑問 mysql關於varchar和text欄位的疑問mysql關於varchar和t

CSS控制DIV層顯示隱藏的實現方法

CSS中的display和visibility屬性css中display和visibility可以隱藏和顯示html元素包括DIV層。看起來兩者非常類似,很多人會搞混。下面分別介紹兩者的屬性:display:none|block;display:none;隱藏該html元素,

Android 動畫1--View控制元件的顯示隱藏效果

顯示動畫 mShowAction = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f,                         Animation.RELATIVE_TO_SELF, 0.0f, Animation.RE

JS動態生成,並新增行雙擊事件

//獲取某一出庫型別某日期所有出庫單 累計金額列表function getOutSheetAmtList(){        var hosnum=$('#hosnum').val();    var sdate=$('#sdate').val();//記賬日期 始    var edate=$('#eda

通過hover簡單控制盒子的顯示隱藏

<!doctype html> <html> <head> <meta charset="utf-8"> <title>無標題文件</title> <style type="text/

個人筆記 js 02 控制div的顯示隱藏js控制iframe的顯示隱藏

document.getElementById('divf').style.display=i.style.display=='none'?'block':'none'; //divf為控制顯示

JS控制HTML元素的顯示隱藏

inline 顯示空白 http str 是否 ava .get ntb tel 利用來JS控制頁面控件顯示和隱藏有兩種方法,兩種方法分別利用HTML的style中的兩個屬性,兩種方法的不同之處在於控件隱藏後是否還在頁面上占空位。 方法1:   document.getEl

[Swift通天遁地]二、表格-(13)實時調整表元素的顯示隱藏

本文將演示如何顯示或隱藏指定的表單區域。 在專案導航區,開啟檢視控制器的程式碼檔案【ViewController.swift】 現在開始編寫程式碼,實現隱藏和顯示錶單區域的功能。 1 import UIKit 2 //首先在當前類檔案中, 3 //引入以及安裝的第三方類庫 4

用JQuery+CSS實現form顯示隱藏

<form id="f" method="post">登陸<span id="x">X</span><br>username:<input type="text" name="username"><br>password:<inpu

js控制顯示隱藏 jquery賦值與新增事件

<script type="text/javascript">function yincang1(){ //獲取兩個div var oDiv1=document.getElementById("div1"); //判斷div1是顯示或者

Asp.net 動態控制GridView列的顯示隱藏

效果圖如下:        說明:當點選Gridview列中的—符號時,該被選列被隱藏掉,自動顯示在下邊的下拉框中,當選中下拉框中的某列時,該列在                   在Gridview中又顯示出來 解決方案: 需要在程式中需要引入一個JS

JS 獲取設定input值,控制提交地址

以 JS 注入的方式獲取和設定input域的值: <!doctype html> <html lang="en"> <head> <meta

Android動態控制狀態列以及系統導航欄顯示隱藏

其實說到沉浸式狀態列這個名字我也是感到很無奈,真不知道這種叫法是誰先發起的。因為Android官方從來沒有給出過沉浸式狀態列這樣的命名,只有沉浸式模式(Immersive Mode)這種說法。而有些人在沒有完全瞭解清楚沉浸模式到底是什麼東西的情況下,就張冠李戴地認為一

js控制文字字數,並能點選顯示隱藏

很多時候,你不用考慮文字字數的問題,因為和你多地方,如資料庫、後臺控制;都會限制文字字數, 但有時候,比如:你的老闆說,我們現在要做一個簡單的主題介紹單頁,還是要適用於web手機端的;那麼你就有可能會用到以下這段js了,不是特別的複雜,不過一定是實用的。 我寫的很粗糙,大神

安卓(Android )軟鍵盤的控制顯示隱藏

false def gets nbsp bool code 表示 soft 系統 Activity 啟動時軟鍵盤默認狀態 在清單文件(manifest .xml)中可以通過在 Activity 標簽中增加屬性控制軟鍵盤的默認狀態: android:windowSoftIn