2013-10-13 25 views
2

遺憾的模糊標題,但我不知道如何更精確地描述在很短的句子的問題。在提交之前操作表單值而不顯示給用戶?

我的問題如下:

當我操縱的onsubmit回調函數中的表單值像在下面的示例中,瀏覽器有時顯示改變的輸入/ textarea的值提供給用戶,同時提交表單並且是前轉發到結果頁面。

<html> 
<head> 
    <script type="text/javascript"> 
    function manipulateForm() { 
     document.forms["myForm"]["myField"].value = "new value"; 
     return true; 
    } 
    </script> 
</head> 
<body> 
    <form name="myForm" action="submit.htm" onsubmit="manipulateForm()"> 
    <input type="text" name="myField"> 
    <input type="submit" value="Submit"> 
    </form> 
</body> 
</html> 

有什麼辦法可以繞過這個嗎?我想要的是發送操作表單值,但沒有用戶實際看到表單數據已更改。

謝謝!

+1

你確定這個代碼是工作?你稱爲你的表單'myForm1',但你的代碼用'myForm'引用它。額外的參數 – ComFreek

+0

使用隱藏域 – lordkain

+0

的提示@ComFreek謝謝,我編輯的代碼。 – user1159435

回答

3

如何如何創建兩種形式之一假冒其他真實......用戶在假的形式..這時候提交調用函數manipulateForm進入數據...默認提交防止假貨形式的作用..並從提取.. ..操縱在現實形式設置的假數據..那麼真正的表單提交觸發...
類似的東西..這裏是一個例子..

<div> 

    <form onsubmit="return manipulateForm()"> 
    <input type="text" id="myFieldFake"> 
    <input type="submit" value="Submit"> 
    </form> 

    <form id="myForm" action="javascript:alert('Replace with your form action')" style="display:none" > 
    <input hidden="true" type="text" id="myFieldReal"> 
    <input hidden="true" type="submit" value="Submit"> 
    </form> 

    </div> 

和操作功能...

function manipulateForm() { 

    var myFieldValue = document.getElementById("myFieldFake").value; 

// do something with myFieldValue... 

document.getElementById("myFieldReal").value = myFieldValue ; 

document.getElementById("myForm").submit() ; 

     return false ; 
    } 

jsFiddle

+1

嘿,謝謝!這應該工作。人們還可以用JavaScript創建第二個/隱藏的表單。這不是很優雅,但如果沒有其他辦法,我會在今天晚些時候接受它作爲解決方案。 – user1159435

+0

沒有問題..我很高興我能幫助..並感謝acceptin我的答案...:d –

相關問題