2012-11-21 80 views
0

我對JavaScript相當陌生,並且有一個關於如何在不提交表單的情況下獲取輸入字段值的問題。我有以下一小段代碼,我將它與一個實時驗證腳本結合使用來驗證字段。如何在不提交表單的情況下在javascript中獲取輸入字段的值?

<form name="FormName" method="post" /> 
    <input type="text" id="nameValidation" value="HelloWorld" /> 
    <script type="text/javascript"> 
     var NameValue = document.forms["FormName"]["nameValidation"].value; 
    </script> 
</form> 

我想要的變種NameValue是你鍵入到輸入字段,所以我可以將驗證後出現的消息中使用它的值。當我在不提交表單的情況下更改輸入字段的值時,var NameValue被stil設置爲「HelloWorld」。在做了一些研究後,我發現我可以使用jQuery解決它,它的功能是serialize()。有沒有辦法做到這一點沒有jQuery?

回答

6

沒有jQuery的:

var value = document.getElementById('nameValidation').value; 

你有語法將使用其名稱,而不是它的ID來獲得的輸入。

如果你想要的是使用這個值,當它改變時,你可以這樣做:

var nameValidationInput = document.getElementById('nameValidation'); 
function useValue() { 
    var NameValue = nameValidationInput.value; 
    // use it 
    alert(NameValue); // just to show the new value 
} 
nameValidationInput.onchange = useValue; 
nameValidationInput.onblur = useValue; 
+0

我不認爲你理解我的問題。我希望var NameValue在用戶更改時進行更新。這樣,當用戶更改值後調用var時,它仍然是「HelloWorld」。 – BlueCola

+0

我已經調用變量值而不是NameValue來尊重命名最佳做法,但當用戶更改輸入內容時,變量(現在使用新名稱)確實會更改值(在useValue函數內)。 –

0

使用的onchange或onblur事件調用此代碼:

VAR NameValue = document.forms [ 「窗體名稱」] [ 「nameValidation」]值。

這樣,當光標離開文本框

<input type="text" id="nameValidation" value="HelloWorld" onblur="changeVal();" /> 

<script type="text/javascript"> 

    function changeVal() { 
     var NameValue = document.forms["FormName"]["nameValidation"].value; 
alert(NameValue); 
    } 
</script> 
0

你可以讓你的客戶端代碼來響應在文本框中的值的變化,像這樣它會被激活:

$(document).ready(function(){ 
    $("#nameValidation").on('change', function() { 
     var value = $("#nameValidation").value; 
     //do your work here 
    } 
}) 
+3

他問出jQuery –

+0

對不起,但不是這個jQuery? – BlueCola

+0

這確實是jQuery。他問是否有沒有它的方式,但正如例子所示,如果你使用jQuery,代碼更加優雅和可讀。 –

0

在您的示例中,該變量僅在當時及時獲取分配給它的值。它在文本框更新時不更新。您需要觸發一個函數[onchange或onblur或按鍵]並將該變量重置爲新值。

<form name="FormName" method="post" /> 
    <input type="text" id="nameValidation" value="HelloWorld" /> 
    <script type="text/javascript"> 
     var myTextbox = document.getElementById("nameValidation"); 
     var nameValue = myTextbox.value; 
     myTextbox.onchange = function() { 
      nameValue = myTextbox.value; 
     }; 
    </script> 
</form> 
+0

我在編輯之後使用了這個腳本,但是當我將它添加到腳本標記中時,腳本的其餘部分似乎不再被執行。 – BlueCola

+0

http://jsfiddle.net/Q2PGk/對我有用 – epascarello

+0

從另一個用戶的腳本中得到了同樣的問題,似乎是LiveValidation腳本的問題,很奇怪。 – BlueCola

1

您的代碼有效。它將輸入字段的值分配給變量NameValue。你所解釋的和JQuery serialize所做的是兩件不同的事情。你需要

一切都在你的代碼分配給合適的事件:

<form name="FormName" method="post" /> 
    <input type="text" id="nameValidation" value="HelloWorld" onchange="myFunction()"/> 

</form> 
<script type="text/javascript"> 
function myFunction(){ 
    var NameValue = document.forms["FormName"]["nameValidation"].value; 
    alert(NameValue); 
} 
</script> 

see the JSFiddle

+0

@BlueCola你應該爲特定事件分配函數。在同一個函數中寫入賦值和驗證,並在事件中調用它。我下次會寫下差異,我必須離開,對不起。 – F0G

+0

@BlueCola在我的答案有URL包括,jquery [序列化JQuery.com](http://api.jquery.com/serialize/)。 – F0G

相關問題