2012-12-02 89 views
5

假设我得到了一个如下所示的HTML表单,并且希望将文本字段中的值传递给JS变量。从窗体传递变量值javascript

<form name="testform" action="" method="?" 
<input type="text" name="testfield1"/> 
<input type="text" name="testfield2"/> 
</form> 

我只在PHP中将值传递给变量。在javascript中执行时,我需要一个方法吗?主要问题,它是如何完成的?

回答

3

这里有几个例子:

的Javascript:

document.getElementById('name_of_input_control_id').value; 

的jQuery:

$("#name_of_input_control_id").val(); 

基本上你是从使用Javascript的DOM中提取输入控件的值/ jQuery的。

+1

注意如何在OP的示例中的控件没有一个ID,虽然... –

+1

确实。 OP将不得不为他/她的输入控件添加一个ID。 – Lowkase

+0

我的观点是:不一定。使用名称就好了,因为表单元素无论如何都需要一个名字(至少当他们还通过表单与服务器进行通信时),为什么不使用它呢? –

0

尝试在“提交”下面:

var input = $("#testfield1").val(); 
0

的答案是正确的,但如果你不把你的代码放到一个的document.ready功能......如果你的代码块上面你可能会面临的问题你不会找到ID为任何输入栏,因为在这一刻它不存在于HTML部分...

document.addEventListener('DOMContentLoaded', function() { 
    var input = document.getElementById('name_of_input_control_id').value; 
}, false); 

jQuery的

jQuery(document).ready(function($){ 
    var input = $("#name_of_input_control_id").val(); 
}); 
0

如果你只是使用文本字段在Javascript中你并不真的需要一个methodaction属性

添加submit按钮和onsubmit处理程序,以这样的形式,

<form name="testform" onsubmit="return processForm(this)"> 
    <input type="text" name="testfield1"/> 
    <input type="text" name="testfield2"/> 
    <input type="submit"/> 
</form> 

然后,在JavaScript你可以有这个processForm功能

function processForm(form) { 
    var inputs = form.getElementsByTagName("input"); 
    // parse text field values into an object 
    var textValues = {}; 
    for(var x = 0; x < inputs.length; x++) { 
     if(inputs[x].type != "text") { 
      // ignore anything which is NOT a text field 
      continue; 
     } 

     textValues[inputs[x].name] = inputs[x].value; 
    } 

    // textValues['testfield1'] contains value of first input 
    // textValues['testfield2'] contains value of second input 

    return false; // this causes form to NOT 'refresh' the page 
}