2011-04-05 66 views
1
多个输入

我有一个动态的多种文字输入:编辑使用jQuery

<input type="text" id="text_1"> 
<input type="text" id="text_2"> 
<input type="text" id="text_3"> 
<input type="text" id="text_4"> 
<input type="text" id="text_5"> .... 

我如何与jQuery的每一个的TextInput的ID编辑:

$('#form').submit(function(){ 
    $.post('include/setting.php', { 
    text_(id): $('#text_(id)').val(), // <-- 
    }, 'json') 
    return false; 
}) 

而且用PHP如何我能得到输入ID吗?

回答

5

使用serialize()

$('#form').submit(function(){ 
    $('#form input[id]').each(function(){ 
    $(this).attr('name', $(this).attr('id')); 
    }); 
    $.post('include/setting.php', $('#form').serialize()); 
    return false; 
}) 
+2

'输入'需要'名称'这个工作。 – 2011-04-05 14:53:12

+0

@火箭你说得对。我改变了我的答案(现在我添加名称属性到每个输入取决于它的ID)。 – 2011-04-05 15:05:53

+0

你可以使用'$('#form input [id]')'来获得带有id的输入,你不需要'[id * ='''']'。 – 2011-04-05 15:08:35

0

首先,要与php共享信息,您需要发送带有get或post的ajax数据,这意味着在php中您将接受$_REQUEST['url_var_name'](接受其中之一)的数据。例如:

$requests = array('name', 'time', 'city'); // Request whitelist. 
$params = array(); // Empty array to hold the final values. 
foreach($requests as $param){ 
    $params[$param] = @$_REQUEST[$param]; // Null by default. 
} 
// End up with an array of whitelisted parameters in $params to cast or restrict. 

其次,既然你选择多个元素,你可能希望用一个类上的所有元素,然后遍历它们与jQuery .each(),或者只是在一定选择输入元素div,使事情变得更简单。例如:

<div id='#name-inputs'> 
<input type="text" id="text_1"> 
<input type="text" id="text_2"> 
<input type="text" id="text_3"> 
<input type="text" id="text_4"> 
<input type="text" id="text_5"> 
</div> 

,那么你会用的输入通过$('#name-inputs input')互动的ID单独拉他们来代替。通过这种方式,您可以在不限制数字循环方案的情况下真正为输入命名。

编辑: @ ARTStudio的建议上serialize()可能比在JavaScript单独地与输入处理甚至更好(新功能对我来说,我喜欢它)。

+0

的感谢!以及如何在php中使用序列化表单获取值 – tonoslfx 2011-04-05 15:00:19

+0

正如Rocket提到的,参数将被命名,无论您将其作为name属性放在窗体中。因此,''将会是'somepage.php?city = SomeThing'的相当职位,除非不在url中并且可以通过$ _REQUEST ['city']'进入PHP。在上面给出的php代码示例的情况下,您只需将'$ requests = array('city');'作为起始点,以稍后获取所选选项。 – Kzqai 2011-04-05 15:04:46