javascript
  • forms
  • function
  • input
  • 2013-03-07 29 views 2 likes 
    2

    我有,我要追加到形式的按鈕被點擊權當提交隱藏輸入標籤變量名和值。我如何去編碼它?Javascript:如何在點擊提交按鈕時將隱藏的輸入標籤添加到表單中?

    這裏是我的代碼:

    <script type="text/javascript"> 
    
    hname="reference"; 
    hvalue="1"; 
    
    function insertInput(){ 
    document.write("<input type='hidden' name='" + hname + " ' value=' " + hvalue + " '/><br/>"); 
    } 
    
    </script> 
    
    
    <form id="form1"> 
        <p><label>Username:</label> <input type="text" name="username" size="10"/></p> 
        <p><label>Password:</label> <input type="password" name="password" size="10"/></p> 
    
        <p id="hidden"><!-- Insert Hidden input tag here --></p> 
    
        <button type="submit' onClick="insertInput();">Log In</button> 
    </form> 
    

    我似乎無法得到它的工作。請幫忙!先謝謝了!

    +0

    切勿使用'document.write',除非您使用的是時間機器發送該代碼的回到1996年... – 2013-03-07 23:35:10

    回答

    3

    試試這個:

    <form id="form1"> 
         <p><label>Username:</label> <input type="text" name="username" size="10" /></p> 
         <p><label>Password:</label> <input type="password" name="password" size="10" /></p> 
    
         <p id="hidden"><!-- Insert Hidden input tag here --></p> 
    
         <button type="submit" onclick="return insertInput();">Log In</button> 
    </form> 
    
    
    
    <script type="text/javascript"> 
    
        hname="reference"; 
        hvalue="1"; 
    
        function insertInput(){ 
         var para, hiddenInput, br; 
         para = document.getElementById('hidden'); 
         hiddenInput = document.createElement('input'); 
         hiddenInput.type = 'hidden'; 
         hiddenInput.name = hname; 
         hiddenInput.value = hvalue; 
         para.appendChild(hiddenInput); 
         br = document.createElement('br'); //Not sure why you needed this <br> tag but here it is 
         para.appendChild(br); 
    
         return false; //Have this function return true if you want to post right away after adding the hidden value, otherwise leave it to false 
        } 
    
    </script> 
    
    +0

    這一個似乎工作。謝啦!還有一個問題...我如何去了解它設置爲自動增量,如果我有可變hname和hvalue等於陣列,如: hname =「寶馬」,「沃爾沃」,「薩博」,「豐田」] ; hvalue = [「運動」,「豪華」,「高級」,「混合」]; – netizen0911 2013-03-08 01:08:23

    +0

    我想你想先發送寶馬,然後沃爾沃,然後是薩博,然後是豐田。嘗試具有hiddenInput.name = hname [指數]和hiddenInput.value = hvalue [索引],然後每次遞增索引調用函數(如果你把它小心超過一定量的時間(即,陣列的長度,在這種情況下4)那麼你會得到一個數組的出界錯誤)。 – eburgos 2013-03-08 02:31:26

    3

    document.write()只有當文件被解析工作。只要文件處於就緒狀態(即DOMContentLoaded事件已被解僱),document.write隱含的調用document.open(),這反過來又重置您的文檔。

    你想使用DOM方法如下:

    var form = document.getElementById('form1'); 
    form.addEventListener("submit", function() { 
        var input = document.createElement('input'); 
        input.type = 'hidden'; 
        input.name = 'reference'; 
        input.value = '1'; 
        this.appendChild(input); 
    }, true); 
    
    2

    這是行不通的,因爲document.write只能同時加載頁面時,試圖加載頁面後使用它會失敗。

    你可以用純DOM腳本做,但我會建議使用DOM庫像jQuery,他們提出做這樣的事情要容易得多。

    這裏有一個方法,你可以用jQuery做到這一點:

    <form id="form1"> 
        <p><label>Username:</label> <input type="text" name="username" size="10"/></p> 
        <p><label>Password:</label> <input type="password" name="password" size="10"/></p> 
    
        <button type="submit">Log In</button> 
    </form> 
    
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
    <script> 
    $(function() { 
        var hname = "reference", 
         hvalue = "1"; 
    
        $("#form1").on("submit", function() { 
         $(this).append("<input type='hidden' name='" + hname + " ' value=' " + hvalue + " '/><br/>"); 
        }); 
    }); 
    
    </script> 
    
    相關問題