如何使用AJAX / PHP获取具有相同id的动态生成的文本框的值?

时间:2016-07-05 15:32:32

标签: javascript php html ajax

在这个网页中,我动态生成多个文本框,每个文本框都意味着保持唯一值,我想动态获取该值。但是我无法根据其位置捕获文本框的值。此代码仅适用于首次生成的文本框。我有这样的代码

<tr>
<td  align="center"><input type="text" name="serialNoArray[]" id="serialArray" onChange="checkusername()" ><span id="std_id_status"></span></td>
</tr>

<script> 
function checkusername() { 
    var s = _("serialArray").value; 
    if(s != "") {  
        _("std_id_status").innerHTML = 'checking ...'; 
        var ajax = ajaxObj("POST", "sellingDetails.php");
        ajax.onreadystatechange = function() { 
            if(ajaxReturn(ajax) == true){
                _("std_id_status").innerHTML = ajax.responseText;
            }
        }
        ajax.send("std_id_check="+s);
      }             
}    
</script>

2 个答案:

答案 0 :(得分:1)

首先,您应该使用不是id的类,因为具有id的元素对于整个文档必须是唯一的。 由于您使用onChange,因此可以使用this onChange="checkusername(this)"来传递元素。 我想你也应该更改restrict函数onkeyup="restrict('serialArray')"的代码,但我没有看到代码,所以如果你不提供这个代码我也无法帮助你...

    <tr>
    <td  align="center"><input type="text" name="serialNoArray[]" class="serialArray" onkeyup="restrict('serialArray')" onChange="checkusername(this)" ><span class="std_id_status"></span></td>
    </tr>

然后你只能获得被更改元素的值并仅更改匹配范围的html。(我在示例中使用jQuery,因此您应该将它包含在文档中。)

<script>
    function checkusername(s) {

        if (s.value != "") {
            $(s).nextAll('.std_id_status').first().html('checking ...');
            var ajax = ajaxObj("POST", "sellingDetails.php");
            ajax.onreadystatechange = function() {
                if (ajaxReturn(ajax) == true) {
                  $(s).nextAll('.std_id_status').first().html(ajax.responseText);
                }
            }
            ajax.send("std_id_check=" + s.value);
        }
    }
</script>

由于我没有你所有的javascript代码,我无法测试它,但是这样的东西应该有效。

答案 1 :(得分:0)

我还没有测试但是应该这样做

所有动态生成的文本框,为他们提供一个类

<input type="text" class="tagMe" placeholder="Enter Serial No."  onkeypress="return isNumberKey2(event)" onkeyup="restrict('serialArray')" onChange="checkusername()" required autofocus >

收集数据

var info= "";
$('.tagMe').each( obj, function( key, value ) {
 if(info != "")
      info += "^"; // ^ is a delimiter
 info += value; 
});

将信息发送到您的服务器,拆分^并解析数据(小心空元素)