2016-07-05 43 views
0

在这个网页我动态生成多个文本框,每个文本框的目的是保持唯一值,我想动态获取该值。但我无法根据其位置捕获文本框的值。此代码仅适用于首次生成的文本框。我有这样的代码如何使用AJAX/PHP获取具有相同ID的动态生成文本框的值?

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

你是通过JS还是PHP动态添加它们?如果JS现有的JavaScript不会意识到新添加的DOM元素。你将不得不使用事件委托来将事件冒泡到当JS在页面加载时运行时出现在DOM中的一个点。 –

+1

重复'ID's是非法的HTML,并且没有什么可以做的。 getElementById将只返回一个元素。您需要将ID更改为每个ID唯一。 –

+0

那么我应该如何将具有动态ID的值发送给'checkusername()'函数,以便它可以存储在该变量的's'中? – Assasin

回答

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; 
}); 

发送信息到您的服务器,分割^和解析数据(注意空元素)

+0

您的代码无法使用。我想根据其位置的文本框的值,并希望它被存储在该变量中。一次一个文本框值。 – Assasin

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代码我无法测试,但这样的事情应该工作。

+0

这不起作用。 – Assasin

+0

正如我所说....“由于我没有你所有的JavaScript代码,我无法测试它,但是像这样的东西应该可以工作。”所以,也许你想要更具体,并定义什么是不工作...做你在控制台中有错误? –

+0

感谢您的帮助......问题已得到解决:) – Assasin

相关问题