使用 jQuery 编辑多个输入

发布于 2024-10-30 16:16:52 字数 505 浏览 6 评论 0原文

我有一个动态多文本输入:

<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"> ....

How do I get the id on every textinput with jQuery to edit:

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

使用 php 如何获取输入 id?

I've got a dynamic multiple text input:

<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"> ....

How do I get the id on each textinput with jQuery to edit:

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

And with php how do I get the input id?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

深海少女心 2024-11-06 16:16:52

使用 serialize()

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

Use serialize()

$('#form').submit(function(){
  $('#form input[id]').each(function(){
   $(this).attr('name', $(this).attr('id'));
  });
  $.post('include/setting.php', $('#form').serialize());
  return false;
})
沧笙踏歌 2024-11-06 16:16:52

首先,要与 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 中单独处理输入更好(对我来说是新函数,我喜欢它)。

First of all, to share the information with php, you need to send that ajax data with get or post, which means that in php you'll be accepting the data with $_REQUEST['url_var_name'] (which accepts either). For example:

$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.

Secondly, since you're selecting multiple elements, you might want to either use a class on all the elements and then iterate over them with jQuery .each(), or just select for input elements within a certain div, to make things simpler. For example:

<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>

Then you would interact with the inputs via $('#name-inputs input') instead of pulling them individually by id. In that way you can really name the inputs whatever you want without limiting them to a numeric looping scheme.

Edit: @ARTStudio's suggestion on serialize() is probably even better than dealing with the inputs individually in the javascript (new function to me, I like it).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文